Unity学习笔记

Unite优化总结(2016)

2019-10-14  本文已影响0人  塘朗山小钻风

工欲善其事必先利其器,这些好工具可以有大帮助,Unity内集成的Profiler(因为是集成在Unity中可能会被本身数据干扰,特别是编辑器模式运行)和Memory Profile。针对平台的有iOS->Instruments,Android->VTune和Snapdragon profiler。

从内存角度来说:降低render txture的尺寸。通过AssetPostProcessor修改资源的导入配置,常用的如下几项:

1) 相对镜头位置固定的图片不需要 mipmap

2) 图片的Read/Write要关闭。模型的mesh在导入时也是自动开启的,生成mesh collider要用到这个,如果不用生成mesh collider。也就可以关闭掉。

3) 压缩图片大小。UI图集纹理大小1024*1024或2048*2048,模型贴图512*512

4)如果模型没用character动画就可以取消勾选rig。(disable rig on no-character model)

5)对于共用蒙皮绑定的角色,可以复用avatar。(copy avatars for characters with shared rigs)

6)开启mesh压缩。

在代码中创建mesh renderer时默认cast/receive shadow是开启的,light/reflection probe也是开启的。如果不需要关闭它们。

音频文件:iOS平台使用mp3,Android平台使用Vorbis。游戏中使用单声道Mono. 声音的比特率也尽量低。

尽量重用Collection(List和Hashset, Dictionary)

避免直接字符串拼接和闭包函数,匿名函数。

如果用枚举Enum作为Dictionary的键值的话。枚举值会转化为对象Object。比较键值时是比较hashcode. 解决办法是为Dictionary传入一个实现IEqualityComparer的参数。

把文字处理成JSON字符串是非常慢的(内部用到了反射)。解决办法是:不需要动态改的数据序列化成对象,把文字分块处理只处理当前需要的(分治),使用多线程,Unity 5.3后用JsonUtility稍微好点。

Resources目录内的东西尽量少,因为在启动阶段就要处理。

上一篇 下一篇

猜你喜欢

热点阅读