关于Unity3D优化

来源:互联网 发布:软件工具箱 编辑:程序博客网 时间:2024/06/08 14:28

Unity3D优化

 

Unity3D引擎开发游戏或应用非常方便快捷,使用这个引擎的人也越来越多,现在为方便大家使用,特别将一些Unity中的优化小技巧列出。

 

了解哪些UnityAPI函数比较耗时,在优化的时候是很有用的,但这需要专门学习,这里就不详细说明了。

1.避免每帧重复调用耗时的API

2.多使用var定义GameObject

3.尽量少使用查找物体命令,如Find,FindObjectOfType,FindGameObjectsWithTag

4.尽量让查找命令只执行一次,如:放在Start中

5.避免使用射线Ray投射

6.射线检测较多的三角面物体需要较多的时间

7.不要在每帧中使用太多的射线检测

8.使用裁切蒙版CullingMask排除不需要射线检测的物体

9.条件许可时尽可能多帧做射线检测,如:3帧检测一次

 

另外,了解脚本执行顺序,按需优化,也是提高效率的主要手段。

现将脚本顺序简单罗列如下:

1.唤醒Awake

2.开始Start

3.固定刷新FixedUpdate

4.模拟物体Physics

5.触发器进入、离开等Trigger

6.碰撞器进入、离开等Collision

7.刚体的Transform的位置、旋转处理Rigibody

8.鼠标按下、抬起等事件OnMouse

9.刷新Update

10.骨骼动画的融合处理等AnimationsBlend

11.最后刷新LateUpdate

12.渲染Rendering

 

其次,只在需要时才执行物体上的脚本也很重要。尽量不要每帧都执行不必要的脚本,

如:检测敌人是否靠近,可用触发器OnTriggerEnter/Exit或者隔几秒检测一次

 

还有,优化图片等资源也是非常重要的事情,比如汉字,Unity在移动设备的中文输入目前只能通过导入字体实现动态中文,那么字体图集的大小就非常重要了,在这方面,汉字这样的象形文字天生就比拼音文字大N倍,所以必须精简字体。

 

这里在简单谈谈,关于保存Unity3D运行状态的调整问题。

在Unity3D中,Play状态中做的一些修改是不被保存的,如:移动旋转添加删除组件等操作,但个别除外,如:修改GUISkin,更改材质球。

有一个简单的方法可以保存我们的更改,就是用拖拽预设Prefab的方法来保存更改。

 

再说说关于大场景的优化与切换,大场景因为资源庞大,调入会非常缓慢,如果做得不好会非常影响体验,最直接的办法就是精简模型并减少模型数量,优化贴图以及优化材质也会起很大作用,如果这些工作已经做完了,但仍然无法减少太多,这时候可以用一些小技巧。比如一个简单的进度条就能很明显的解决问题,同样等待5秒,没有进度条会让人觉得无法忍受,有进度条的时候就会感觉5秒很短。

 

还有,大场景间的载入的时候要注意避免IOS启动程序超时,这时候可以用增加中间过度场景的方法来缓解,并且要使用异步加载Application.LoadLevelAsync()。

 

关于优化就简单介绍到这里,有兴趣可以关注微信号:cdunity。优迪教育。

 

 

 

 

0 0
原创粉丝点击