首先移动设备没有独立显卡。移动设备没有独立显存(显存的作用是用来存储显卡芯片处理过或者即将提取的渲染数据),所有在移动端数据内存和显存是同一块内存。所以有可能我们游戏占用的内存并不大,但是依旧爆内存了,其实是因为显存分配不出来了。这种情况,我们可以去查看一下Log,例如Android会有一个 OpenGL Error:Out Of Memory。移动设备的CPU面积更小,因此会导致缓存级数更少,大小也更小,例如一般的台式机三级缓存可能有8-16M,而移动设备则只有2M左右。
public class Enemy : MonoBehaviour{ public float maxSpeed; public float attackRadius;}//这个组件挂载在每个敌人身上,但是其中这两个浮点数(maxSpeed 和 attachRadius)的数值都是不变的。那么当场景中存在很多的敌人时,每次生成敌人的时候,这些数据就会重复一份。//所以即使所有数据都一样,这两个浮点数还是重复的出现在有此脚本的对象上。所以建议改用Scriptable Objects,这样就只会耗费一组这样数据的内存,代码如下:public class EnemyConfiguration : ScriptableObject{ public float maxSpeed; public float attackRadius;}public class Enemy : MonoBehaviour{ public EnemyConfiguration enemyConfiguration;}