Component 相关优化
Transform
使用内建的数组,比如用 Vector3.zero 而不是 new Vector(0, 0, 0);
transform.localRotation = Quaternion.Euler(Vector3.zero);
transform.localScale =Vector3.one;
transform.localPosition =Vector3.one;
GameObject 相关优化
(脚本和本地引擎 C++代码之间的通信开销)
Gameobject 缓存:类似组件的缓存策略。
查找对象标签:if (go.CompareTag (“xxx”)来代替 if (go.tag == “xxx”),
因为内部循环调用对象分配的标签属性以及拷贝额外内存。
SendMessageUpwards、SendMessage:少用这两个函数,使用委托替代。
缓存组件:调用 GetComponent 函数耗性能,用变量先缓存到内存在使用, 有
必要时记得更新缓存组件。
NGUI 优化
优化数学运算,尽量采用整型代替浮点型,除法改乘法。
MonoBehaviour优化
如果没有相应的事件处理,删除对应的空函数
Update 优化
如果没必要每帧的逻辑,可以降低频率,方法如下:
Void Update(){if(Time.frameCount%6==0){DoSomething();}}
如果没必要每帧的逻辑,可以使用周期性的协程
如果没必要每帧的逻辑,可以使用
InvokeRepeating("DoSomeThing",0.5f,1.0f);
Gameobject 不可见时,设置 enabled = false 时,update 就会停止调用。
在 update 中尽量不要调用查找对象或组件方法如 FindByTag 或 Find 等等。可
以在 start 中先缓存下来,然后使用。
协程 WaitForSeconds 优化