unity开发程序注意部分(合并总结)

xiaoxiao2025-06-01  56

一、程序方面   01、务必删除脚本中为空或不需要的默认方法;   02、只在一个脚本中使用OnGUI方法;   03、避免在OnGUI中对变量、方法进行更新、赋值,输出变量建议在Update内;   04、同一脚本中频繁使用的变量建议声明其为全局变量,脚本之间频繁调用的变量或方法建议声明为全局静态变量或方法;   05、不要去频繁获取组件,将其声明为全局变量;   06、数组、集合类元素优先使用Array,其次是List;   07、脚本在不使用时脚本禁用之,需要时再启用;   08、可以使用Ray来代替OnMouseXXX类方法;   09、需要隐藏/显示或实例化来回切换的对象,尽量不要使用SetActiveRecursively或active,而使用将对象远远移出相机范围和移回原位的做法;   10、尽量少用模运算和除法运算,比如a/5f,一定要写成a*0.2f。   11、对于不经常调用或更改的变量或方法建议使用Coroutines & Yield;   12、尽量直接声明脚本变量,而不使用GetComponent来获取脚本; iPhone   13、尽量使用整数数字,因为iPhone的浮点数计算能力很差;   14、不要使用原生的GUI方法;   15、不要实例化(Instantiate)对象,事先建好对象池,并使用Translate“生成”对象;

15. StackTraceUtility.PostprocessStacktrace()和StackTraceUtility.ExtractStackTrace():        1.一般是由Debug.Log或类似API造成.        2.游戏发布后需将Debug API进行屏蔽.

  16. GarbageCollectAssetsProfile:        1.引擎在执行UnloadUnusedAssets操作(该操作是比较耗时的,建议在切场景的时候进行).        2.尽可能地避免使用Unity内建GUI,避免GUI.Repaint过渡GC Allow.        3.if(other.tag == GearParent.MogoPlayerTag)改为other.CompareTag(GearParent.MogoPlayerTag).因为other.tag为产生180B的GC Allow.     17. 少用foreach,因为每次foreach为产生一个enumerator(约16B的内存分配),尽量改为for.     18. Lambda表达式,使用不当会产生内存泄漏.     19. 尽量少用LINQ:        1.部分功能无法在某些平台使用.        2.会分配大量GC Allow.     20. 控制StartCoroutine的次数:        1.开启一个Coroutine(协程),至少分配37B的内存.        2.Coroutine类的实例 — 21B.        3.Enumerator — 16B.     21. 使用StringBuilder替代字符串直接连接.     22. 缓存组件:        1.每次GetComponent均会分配一定的GC Allow. 

 

转载请注明原文地址: https://www.6miu.com/read-5031076.html

最新回复(0)