谈起内存来说,是个庞大的话题,在之前的项目当中,遇到了以下的问题,总结为几点:
1.最基本的是不要在Update里面Find物体,或者是for循环,最好也不要有很多的条件语句判断。
2.合理的使用对象池,这里我就踩过一个坑是在对象池里储存的不是GameObject,而是为了方便存的模型类的对象,比如说怪物的对象。这样做到后来的缺点是: (1)每次使用回收过的对象的时候,需要对其中的数据重新赋值(2)对象储存在查找GameObject的时候可以从类中取但是当你获取到一个GameObject想获取她的类对象就会特别麻烦必须要进行遍历(3)储存的是对象,对内存的开销是比只存GameObject要大的,而且使用起来十分的不灵活。是个错误的例子。
3,对于Animator动画较多的对象预制体,即使使用了对象池,最好是也在进入游戏的时候,或者是进入游戏场景的时候,通过开启一个协程的方式进行预加载,否则难免会出现加载预设体的一瞬间,卡顿甚至是闪退
4,2D游戏来说,将Ui和大部分的动画图片打包到一张图集上,再到unity中切割出来,所占用的空间就会小很多,以我一个塔防的小游戏来说,在我没有打图集之前的安装占用内存达到了1.9G,打图集替换动画等之后降低到了不到200M,这个差距是非常恐怖的