关于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。优迪教育。
- 关于Unity3D优化
- 关于Unity3D的一些优化
- unity3d优化
- Unity3d优化
- Unity3d优化
- Unity3D 优化
- Unity3d优化
- Unity3d优化
- Unity3d优化
- Unity3D优化
- Unity3D优化
- Unity3d优化
- Unity3D-优化
- Unity3d优化
- Unity3d优化
- Unity3d优化
- Unity3D优化
- Unity3D优化--
- 可变参数的日志输出信息
- C++中怎么求类的大小?以及内存对齐原理(面试官经常问到的问题)
- android_xml 文件解析
- mysql left join,right join,inner join用法分析
- Oralce 数据库格式化某列数据
- 关于Unity3D优化
- <easyui>格式数据的构造(Java拼接)(二)(children形式,支持两种树结构)
- CocoaPods安装和使用教程
- 聊一聊MD5
- 迷惑的internal
- 内存四大区是什么
- node.js环境变量配置
- Extjs comboboxtree
- vs相关源码及动态链接下载网址