• 在使用数组或ArrayList对象时应当注意

length=myArray.Length;

for(int i=0;i<length;i++)  {  }

  • 避免

for(int i=0;i<myArray.Length;i++)  {}

  • 如果没有必要每帧都处理,则可以每隔几帧处理一次

void Update(){ if(Time.frameCount%6==0) { DoSomething(); }}

  • 定时重复调用可以使用InvokeRepeating函数实现,比如,启动0.5秒后每隔1秒执行一次 DoSomeThing 函数:

void Start() {InvokeRepeating(“DoSomeThing”, 0.5f, 1.0f);  }

  • 少使用临时变量,特别是在Update OnGUI等实时调用的函数中

void Update()  { Vector3 pos;   pos=transform.position;  }

  • 改为

private Vector3 pos;

void Update()  {pos=transform.position;  }

  • 主动进行垃圾回收

void Update()  { if(Time.frameCount%50==0)  {System.GC.Collection();  }}


  • 优化数学运算,尽量避免使用float,而使用int,特别是在手机游戏中,尽量少用复杂的数学函数,比如sin,cos等函数。改除法/为乘法,例如:使用x*0.5f而不是 x/2.0f 。
  • 压缩 Mesh
  • 运行时尽量减少 Tris 和 Draw Calls
  • 避免大量使用 Unity 自带的 Sphere 等内建 Mesh
  • 将GameObject上不必要的脚本disable掉
  • 删除空的Update方法
  • 引用一个游戏对象的最合乎逻辑的组件
  • 协同程序来代替不必每帧都执行的方法
  • 不要在Update或FixedUpdate中使用搜索方法
  • 不要使用SendMessage之类的方法
  • 使用javascript或Boo语言时,你最好确定变量的类型,不要使用动态类型

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。