- 在使用数组或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语言时,你最好确定变量的类型,不要使用动态类型
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容