Unity3D 代码优化

来源:互联网 发布:php考试系统 编辑:程序博客网 时间:2024/06/07 02:33
1. 尽量避免每帧处理比如:function Update() { DoSomeThing(); }可改为每5帧处理一次:function Update() { if(Time.frameCount % 5 == 0) { DoSomeThing(); } }2. 定时重复处理用 InvokeRepeating 函数实现比如,启动0.5秒后每隔1秒执行一次 DoSomeThing 函数:function Start() { InvokeRepeating("DoSomeThing", 0.5, 1.0); }3. 优化 Update, FixedUpdate, LateUpdate 等每帧处理的函数函数里面的变量尽量在头部声明。比如:function Update() { var pos: Vector3 = transform.position; }可改为private var pos: Vector3; function Update(){ pos = transform.position; }4. 主动回收垃圾给某个 GameObject 绑上以下的代码:function Update() { if(Time.frameCount % 50 == 0) { System.GC.Collect(); } }  5. 运行时尽量减少 Tris 和 Draw Calls预览的时候,可点开 Stats,查看图形渲染的开销情况。特别注意 Tris 和 Draw Calls 这两个参数。一般来说,要做到:Tris 保持在 7.5k 以下Draw Calls 保持在 20 以下6. 压缩 Mesh导入 3D 模型之后,在不影响显示效果的前提下,最好打开 Mesh Compression。Off, Low, Medium, High 这几个选项,可酌情选取。7. 避免大量使用 Unity 自带的 Sphere 等内建 MeshUnity 内建的 Mesh,多边形的数量比较大,如果物体不要求特别圆滑,可导入其他的简单3D模型代替。8. 优化数学计算比如,如果可以避免使用浮点型(float),尽量使用整形(int),尽量少用复杂的数学函数比如 Sin 和 Cos 等等。