首页 > 代码库 > unity优化

unity优化

1、着色器

有些着色器可能是处理器密集型的,因此最好为材质指定移动设备专用的着色器。

打开模型下的材质目录,我们可以找到每个模型的材质。选择列表中的每一个材质,将着色器从Diffuse修改为Mobile/Diffuse。

2、光源

为场景添加光源时要考虑一下,因为有渲染开销。如果你以前做过着色器编程,你会知道为了支持动态光源的渲染,要付出额外的代价。每个光源都需要渲染对象根据使用的着色器、材质计算最终的光源效果,这个计算开销很大。

尽可能的在渲染之前就将光源细节“烘焙(bake)” 到对象的纹理中。“烘焙”是使用静态光源效果的渲染方式,可以实现相同的视觉效果,而无需额外的计算开销。同样的,使用场景的周边光源来控制光源的密度;通过”Edit->Render Settings panel”可以访问。

3、碰撞器

通常,碰撞器根据复杂度排序,对象越复杂,使用这个对象的性能开销越大。

有可能的话,用盒子或者球体(Box/Sphere)来封装对象,这样碰撞器的计算最少。

另外一个常用的普通碰撞器网格碰撞器(Mesh Collider)。它用3D模型的网格来定义对象的边界。这种情况下,视觉的尺寸和物理尺寸相等。

 

1:尽量减少调用绘制方法-你应当尽可能的减少绘画方法的调用次数。为了实现这个,可以把图像纹理或者其它资源共享使用,尽量避免透明,可以使用填充黑色。限制灯光的使用数量 ,在高清设备上可以使用一张纹理图集。

2:在复杂的场景中要留神-使用最最优化的模型,就是几何图形较少的那种。为了减少几何图形,你可以一起使用同一种效果代替 更多的纹理图形和灯光。记住,用户只能看到屏幕内的东西,所以诸多东西他们并发现不到。

3:使用模型仿阴影-动态阴影在IOS设备中是不被支持的,但是幻灯机可以模仿
阴影。唯一可以确定的就是,幻灯机会给你的绘画调用次数明显增多,所以,如果可能的话,使用简单的一张纹理来模仿阴影。

4:小心update/Fixedupdate方法中的第一个地方 —理想的情况下,update和fixedupdate方法每秒被调用 30到60次最佳。因此 ,需要确保你的计算或者引用的每一样内容在此前要完成。当然也要注意逻辑和添加的模型,特别是那些和物理属性相关的。

5:关掉所有你不使用的内容–如果你不需要运行某一个脚本,那么就禁用它。不管它多少的小,或者出现的很少,但每一个处理都需要占用时间。

6:尽可能的使用简单组件—如果你不需求功能较多的组件,那么就自己去实现它避免一起使用大量系统组件。比如,CharacterController是一个很废资源的组件,那么最好使用刚体来定义自己的解决方案。

7:使用真实设备进行调试开发—当运行游戏的时候,把控制台打开,你就可以看到什么最占用时间周期。在XCODE中找到并打开iPhoneProfiler.h文件,把ENABLEINTERNAL_PROFILER调协成1.然后,系统会以较高的优先级告知程序运行状况。你果你用Unity 3d许可,那么你可以利用这一点对脚本代码中的每个时间方法进行运行评估。输出的结果应该类似于这样:

8:帧数

它是衡量游戏运行速度的标准,默认情况下会被设置成30或者60.游戏运行的平均值应该介于2者之间。

9:draw-call 给出了当前绘制方法调用 了多少次,之前提到过,应当通过共用纹理图像或资源来尽可能的保持最低调用次数,

10:verts 给出了当前有多少个顶点绘制。

11:player-detail 很清晰的给出了游戏中每一个组件处理的时间。

 

unity优化