学习笔记适合新手,如有错误请指正。?号处也请各位指点下,谢谢。
内存优化一般来说主要从以下两方面入手:降低资源大小,及时释放不用资源
降低资源大小
要降低资源大小,首先需要分析哪些资源占用较大的比重
1在Build后,打开Console界面,点击界面右上交的下拉菜单
2Open Editor Log打开Editor日志,其中有在整个包中按大小排序的资源列表,它显示了资源的大小以及在安装宝中所占的比例
一般来说,一个3D游戏项目中贴图及UI资源图至少占用50%以上容量,其次就是模型资源、音频资源等,这些资源首先尽量选择合适的压缩格式,并在可接受的范围内适当降低品质
例如一个按钮框素材如果使用1024x1024的尺寸就明显是浪费了,使用256x256的尺寸是更好的选择,而且一定要慎用全屏背景图,这类图每张都会占用非常大的空间
在设计UI时,多考虑UI的复用性,多使用九宫格都是很有帮助的
释放内存中的资源
及时释放内存中的资源是内存优化中非常重要的环节,我们有AssetBundle.Unload、Resources.Unload、GC.Collect等方法可用
其他优化经验
设置目标帧率:通过Application.targetFrameRate设定FPS上限,好处是稳定帧率,减少在高帧率和低帧率间切换造成的不流畅感,这也会减少设备发热和耗电,移动设备上推荐设置为30
音频格式:在游戏中播放时间较长的音乐(如背景音乐)时,建议音频使用OGG或者MP3压缩格式,短促 音效(如枪声,按钮点击音效等)建议采用WAV或者AIF未压缩格式
摄像机:摄像机将远平面设置成合适的距离,远平面过打会将一些不必要的物体加入渲染,降低效率
碰撞:尽量使用立方体或者圆柱体等基本碰撞体,对于复杂的网格模型,请尽量不要使用MeshCollider,而选用基本的立方体或者圆柱体等去拼近似形状