此篇博客内容均根据Unity官方文档内容翻译并总结而来。官方文档的目录为:
UnityManual ---->Bset Practice Guide ----> Understanding Optimization in Unity ----> General Optimization 和 Special Optimization
用户可以自行对文档中的这部分内容进行查阅,这里对这几部分内容只做提炼和总结。
一般优化:
1. 使用Shader , Materail , Animator相关的API功能时,尽量使用它们的属性ID ,避免使用字符串。假如我们要设置一个Material的中某个shader属性的值时,尽量使用material.SetFloat(int nameID, float value) 这个API,少用material.SetFloat( string name, float value) .
2.多使用不分配内存的API。 例子是: 使用RaycastNonAlloc 方法替代 RaycastAll 方法;使用SphereCastNonAlloc 方法替代 SphereCastAll 方法。
3.Unity 在移动或旋转一个Transform的时候,往往会通知这个transform下所有子物体的tranform进行移动或旋转,所以尽量避免在每一帧多次对Transform进行操作。如果非操作不可,也尽量算出最后的Vector3的值,并只进行一次移动。 另外,在操作类似Charactor这些transform层级很深的对象时尤其应该主意,尽量使用角色的Animator系统来操作角色。