人机交互小课堂——UNITY学习之降低性能损耗
1.首先我们在Hierarchy面板中,创建一个cube. 选中cube后,右键->Effects中的(particle system粒子组件),找到右边的Inspector面板中的particle System模块。在这里教大家3个降低性能的小技巧。
第一个 是找到Emission(数量)中Rate over Time(随单位时间生成粒子的数量)这里建议粒子数量小于200个。
第二个 建议关闭粒子的碰撞功能,非常耗时。

第三个 特效总时长要跟真实的特效播放时长一致,不然本来只需要创建一个特效的,因为还在显示,则对象池就多创建一个特效
2.如果可以的话,最好不用MeshCollider处理碰撞,以节省不必要的开销。一般用最小化碰撞检测请求(例如raycasts和sphere checks),并尽量从每次检查中获得更多信息

3.物体身上少挂载组件,用一个组件触发其他类执行会更好。

4.getcomponent,GetChild,find等获取性能千万不要在update或循环中做,尽量不要在update函数中做复杂计算。

5.不需要投射阴影或接收阴影的并且场景有关照就要关闭相关设置(因为有些比较偏的物品确实没必要有阴影)

6.在左上角Edit->project setting-time中调大FixedTimestep(真实物理的帧率)来减少cpu损耗

7.地形的分辨率(Resolution)大小,长宽均尽量小于257。这是因为地形太大,会造成大量顶点数据,给你的内存带宽造成一定的影响.

8.不要在Update中定义变量或者使用循环语句,因为它是每帧都在执行的。
9.在创建地形过程中,我们可以暂时取消Auto Generate的勾选,因为每一次创建地形时,都会重新生成,导致性能下降。
Window->Rendering->Lightsettings->Auto Generate

10.在使用数组或ArrayList对象时应当注意
length=myArray.Length;
for(int i=0;i<length;i++)
{
}
避免
for(int i=0;i<myArray.Length;i++)
{
}
11.当我们导入资源后,检查Read/Write Enabled是否开启
开启Read/Write Enabled一般是用于运行时修改Mesh的顶点数据,开启这个选项会导致Mesh的内存占用翻倍。因此如果项目中不需要在运行时修改这些Mesh数据的话,建议把这个选项关闭。

12.场景中尽可能地使用预制体(prefab)
尽可能地使用prefab的实例化物体,同时删除无用的预制体上的组件以降低内存带宽的负担。
Hierarcy->cube->向下拖拽到->Project面板中的Materials(默认文件夹)

13.光照
像素光可以让你的游戏看起来效果很牛逼,但是不要使用过多的像素光。
在你的游戏中可以使用质量管理器来调节像素光的数量来取得一个性能和质量的均衡点
Hierarchy->Light
性能占用顺序:圆锥光(Spot Light)>点光源(Point Light)>平行光(directional Light)

14.尽量少用模运算和除法运算,比如a/5f,一定要写成a*0.2f。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)