Unity优化大全(三)之CPU-Physics
2015-08-28 00:01
141 查看
前言:
因为在整体学习的一些资料没来得及及时更新,现在来讲讲Physics的优化。
进入主题:
Physics优化有很多方面,这里先说说一些常在项目中出现的优化知识。
1.将物理模拟时间步设置到最小化状态。在我们的项目中不可以将让它低于16毫秒。
Fixed Timestep是和物理计算有关的。所以,若计算的频率太高,自然会影响到CPU的开销。同时,若计算频率达不到游戏设计时的要求,有会影响到功能的实现,所以如何抉择需要各位具体分析,选择一个合适的值。
2.减少角色控制器移动命令的调用。移动角色控制器会同步发生,每次调用都会耗损极大的性能。我们的做法是缓存每帧的移动请求,并且仅运用一次。
3.修改代码以免依赖“ControllerColliderHit” 回调函数。这证明这些回调函数处理得并不十分迅速。
4.面对性能更弱的设备,要用skinned mesh代替physics cloth。cloth参数在运行表现中发挥重要作用,如果你肯花些时间找到美学与运行表现之间的平衡点,就可以获得理想的结果。
5.在物理模拟过程中不要使用Ragdolls,只有在必要时才让它生效。
6.要谨慎评估触发器的“OnInside”回调函数,在我们的项目中,我们尽量在不依赖它们的情况下模拟逻辑。
7.使用层次而不是标签。我们可以轻松为对象分配层次和标签,并查询特定对象,但是涉及碰撞逻辑时,层次至少在运行表现上会更有明显优势。更快的物理计算和更少的无用分配内存是使用层次的基本原因。
8.不要使用网格碰撞器(Mesh Collider,因为它太耗性能了!
9.最小化碰撞检测请求(例如Ray Casts和Sphere Checks),尽量从每次检查中获得更多信息。
10.真实的物理(刚体)很消耗,不要轻易使用,尽量使用自己的代码模仿假的物理。
11.对于投射物不要使用真实物理的碰撞和刚体,用自己的代码处理。
。。。。。。。
最后的最后
很不完善,之后我会不断去完善,大家还有什么更好的建议可以在下面留言哦!谢谢大家
因为在整体学习的一些资料没来得及及时更新,现在来讲讲Physics的优化。
进入主题:
Physics优化有很多方面,这里先说说一些常在项目中出现的优化知识。
1.将物理模拟时间步设置到最小化状态。在我们的项目中不可以将让它低于16毫秒。
Fixed Timestep是和物理计算有关的。所以,若计算的频率太高,自然会影响到CPU的开销。同时,若计算频率达不到游戏设计时的要求,有会影响到功能的实现,所以如何抉择需要各位具体分析,选择一个合适的值。
2.减少角色控制器移动命令的调用。移动角色控制器会同步发生,每次调用都会耗损极大的性能。我们的做法是缓存每帧的移动请求,并且仅运用一次。
3.修改代码以免依赖“ControllerColliderHit” 回调函数。这证明这些回调函数处理得并不十分迅速。
4.面对性能更弱的设备,要用skinned mesh代替physics cloth。cloth参数在运行表现中发挥重要作用,如果你肯花些时间找到美学与运行表现之间的平衡点,就可以获得理想的结果。
5.在物理模拟过程中不要使用Ragdolls,只有在必要时才让它生效。
6.要谨慎评估触发器的“OnInside”回调函数,在我们的项目中,我们尽量在不依赖它们的情况下模拟逻辑。
7.使用层次而不是标签。我们可以轻松为对象分配层次和标签,并查询特定对象,但是涉及碰撞逻辑时,层次至少在运行表现上会更有明显优势。更快的物理计算和更少的无用分配内存是使用层次的基本原因。
8.不要使用网格碰撞器(Mesh Collider,因为它太耗性能了!
9.最小化碰撞检测请求(例如Ray Casts和Sphere Checks),尽量从每次检查中获得更多信息。
10.真实的物理(刚体)很消耗,不要轻易使用,尽量使用自己的代码模仿假的物理。
11.对于投射物不要使用真实物理的碰撞和刚体,用自己的代码处理。
。。。。。。。
最后的最后
很不完善,之后我会不断去完善,大家还有什么更好的建议可以在下面留言哦!谢谢大家
相关文章推荐
- Unity3D 渲染路径
- 使用Unity3D的50个技巧:Unity3D最佳实践
- Unity 内存管理之 ObjectPool
- Unity3D之UGUI学习EventSystem
- Unity常用代码
- unity3d炉石传说初期代码以及自己记录的知识点(初学者可看,有c#基础)
- T4M在Unity5中运行出错修改
- Unity5中Inspector界面上的AssetBundle值设定问题
- Unity3D在Android平台使用嵌入式数据库Sqlite,解决无法找到数据库文件的问题
- Unity3D中帧同步的实现
- Unity3d镜头范围内移动。
- StrangeIoc框架的详细介绍
- 【Unity】常用代码
- unity中实现A*算法的一些问题
- Unity 读取、写入自定义路径文件,调用System.Windows.Forms
- 【unity插件】unity spriteRender图层管理工具(支持Spine)
- unity 在移动平台中,文件操作路径详解
- Unity中的Path对应各平台中的Path
- Unity3d中的资源打包和加载
- 一个在unity3d中使用Excel做配置的解决方案