最近有对自己的Unity3D项目C#代码进行些优化,在网络上看过几篇文章,结合之前自己的经历,罗列下自己遇到的一些值得优化的点,以便共同进步。若有错误,还请指正。
每个“foreach”循环的每次迭代会生成24字节的垃圾内存。一个简单的循环迭代10次就可以留下240字节的内存垃圾,会导致GC频繁调用。
String的相加操作,会频繁申请内存并释放,导致GC频繁回收空间。
3.缓存组件
GetComponent函数是需要较多性能消耗的,对于经常调用的组件,最好缓存到变量之中。值得注意的是gameObject.transform等也是内部通过GetComponent得到的,同样需要缓存。GetComponent是this.transform的10倍消耗时间。this.transform是保存了引用myTransform的1.5倍的消耗时间。(因为新版优化了不少)
Find的效率非常低,若无法避免,可使用FindWithTag代替
当然,最受欢迎的方式是通过将变量设为public通过挂载的方式来访问
5.使用CompareWithTag()代替this.tag=="xxxx"来进行标签比较
#region My Region
//YOU CODE
#endregion