“最优化”:尽可能地,让你的游戏在多个平台上都表现出好的运行效果。

推荐开发者最好在开始开发游戏的时候就把最优化的因素考虑在内,即使在编写代码前,导入资源前,甚至是制作资源,之前就考虑不为过。
  • 渐少顶点的数目
    在不影响效果的情况下尽量减少游戏场景中对象的顶点数。(游戏视图stats面板中可看到顶点数目的统计)
  • 减少材质
    减少绘制调用(draw call),因为一次绘制调用可以批量处理同材质的游戏对象,对于不同材质的对象,只能使用多次调用。
  • 减少UV接缝
    一个顶点会负责一个面的UV接缝,而这直接导致了网络对象顶点数的增加。
  • 不同平台下,纹理的设置不同
    在不同的游戏平台上可以设置不同的纹理大小和压缩格式:

平台

格式

在Android平台

建议选择RGB ETC格式

在iPhone平台

建议选择RGB PVPTC格式

  • 对象缓存组件
    当使用Unity API时,最常用的C#语句是this.transform或transform。这条语句可以直接访问C#的属性,然后返回transform组件的应用。下面的代码,演示了对象缓存的生产和使用:
void Awake()
{
	//变量存储了transform组件的引用
	MyTransform = transform;
}
void Update()
{
	//通过变量改变对象的位置
	MyTransform.LocalPosition = MyPosition;
}
  • 避免频繁使用Update()函数
    Update()在每帧都会被多次调用,1111还有LateUpdate()和fixedUpate()。总之,尽可能编写事件驱动(Event-Driven)的代码,而不是帧驱动(Frame-Driven)。
  • 合理使用Collider组件
    许多游戏对象,在默认情况下被赋予了Collider组件,但有些游戏对象使用Collider组件完全没有必要。例如,GUI对象,粒子以及其他一些根本不会与游戏角色相交的游戏对象。
  • 避免使用OnGUI()和GUI类
    OnGUI()在每帧都会被多次调用,所以最好不要将游戏的逻辑和功能代码放在这个函数里,而只让函数唯一处理GUI绘制。
  • 使用静态批处理
    有些游戏对象在整个游戏过程中都不会发生移动,那么最好在查看器中将它们标记为静态的(static)。
  • 使用天空盒子
    天空盒子类似于模拟摄像机视图的远景,而摄像机本身处于天空盒子的内部的,而不使用网络对象以及其他的任何对象。