原文链接:https://docs.unity3d.com/cn/current/Manual/BestPracticeUnderstandingPerformanceInUnity4-1.html
一。CPU性能优化
1.应在 Unity 中避免使用 foreach 循环。原因不仅是这些循环会进行装箱,而且通过枚举器遍历集合的方法调用成本更高,通常比通过 for 或 while 循环进行的手动迭代慢得多。请注意,Unity 5.5 中的 C# 编译器升级版本显著提高了 Unity 生成 IL 的能力。特别值得注意的是,已从 foreach 循环中消除装箱操作。因此,节约了与 foreach 循环相关的内存开销。但是,由于方法调用开销,与基于数组的等效代码相比,CPU 性能差距仍然存在。
二。内存优化
1.使用变量将需要重复获取的变量进行存储
2.在内存,敏感的帧执行代码里不使用匿名方法和闭包(访问方法作用域之外的变量状态)
3.集合和数组建立对应的池进行重复利用
4.尽量避免装箱操作(需要引用类型参数,传入的却是值类型)
5.字典里的枚举优化
6.需要重复访问unityapi返回的数组时,使用变量存储后访问
7.大量连接的字符串时使用StringBuilder
8.Animator、Material 和 Shader 上使用 Set 或 Get 方法时,请使用整数值方法而非字符串值方法。字符串方法只执行字符串哈希处理,然后将经过哈希处理的 ID 转发给整数值方法。Animator.StringToHash是用于 Animator 属性名称的对应 API
9.使用ColorUtility转换颜色
10.使用交错数组而不是多维数组
11.使用粒子池,把数据给通用粒子池,重复利用