unity3d移动平台性能优化专题(10):大量物体的处理
2015-02-11 19:45
543 查看
对于大量物体的处理,势必出现性能瓶颈,怎么采用折中的方式提升性能同时又不会明显降低表现形式是一个重要的问题。
可以:金币是带动画纹理的粒子系统,一个脚本对所有金币进行碰撞检测,并按照它们与光源的距离设置颜色。
这是一个常见的案例,应该尽量在一个代码块中处理大量的对象,而不是让每个对象都自顾自的处理。
可以:您的角色就是一个枕头,且只是其中一个,它所处的环境在某种程度上是可以预测的(它仅仅与球体和轴对齐立方体碰撞)。对于功能并非全面,但是外观精致运行快速的软体模拟,可以为其编写代码。
可以:大部分敌人距离很远,并且由单个子画面作为代表;或者,敌人是二维角色且不管如何只有一对子画面。每颗敌人的子弹都由同样的粒子系统绘制,并由只由处理基础物理的脚本模拟。每个敌人都按照该区域内其他敌人的状态,每秒更新两次 AI 状态。
这个AI的问题暂时不深入探讨。 对于大量的AI单元,让每一个AI都进行复杂思考是不切实际的。但具体的优化方案会十分复杂,单独在后面开启一个专题。
同时在屏幕上呈现数百旋转、动态光照、金币收集。
不可以:每个金币都是一个附有刚体和脚本的独立对象,以旋转并允许拾起金币。可以:金币是带动画纹理的粒子系统,一个脚本对所有金币进行碰撞检测,并按照它们与光源的距离设置颜色。
这是一个常见的案例,应该尽量在一个代码块中处理大量的对象,而不是让每个对象都自顾自的处理。
您的定制软体模拟
不可以:这是一个枕头的世界,您可以到处乱扔并将其堆在一起。可以:您的角色就是一个枕头,且只是其中一个,它所处的环境在某种程度上是可以预测的(它仅仅与球体和轴对齐立方体碰撞)。对于功能并非全面,但是外观精致运行快速的软体模拟,可以为其编写代码。
30 个敌人角色同时向玩家射击
不可以:每个敌人都有自己的蒙皮网格,拥有独立对象的武器,并在每次射击时实例化基于刚体的爆弹。在每帧运行的复杂的 AI 脚本中,每个敌人都考虑到其他同伴所处的状态。可以:大部分敌人距离很远,并且由单个子画面作为代表;或者,敌人是二维角色且不管如何只有一对子画面。每颗敌人的子弹都由同样的粒子系统绘制,并由只由处理基础物理的脚本模拟。每个敌人都按照该区域内其他敌人的状态,每秒更新两次 AI 状态。
这个AI的问题暂时不深入探讨。 对于大量的AI单元,让每一个AI都进行复杂思考是不切实际的。但具体的优化方案会十分复杂,单独在后面开启一个专题。
相关文章推荐
- unity3d移动平台性能优化专题(6):动画优化
- unity3d移动平台性能优化专题(4):为不同性能的设备设置不同的性能级别
- unity3d移动平台性能优化专题(7):GPU优化
- unity3d移动平台性能优化专题(3):减少面数
- Unity教程之-unity3d移动平台性能优化专题(三):减少面数
- unity3d 移动平台性能优化专题(12):面板的colider问题和rigibody设置
- unity3d移动平台性能优化专题(8):shader优化
- unity3d移动平台性能优化专题(11):脚本细节
- unity3d 移动平台上性能优化专题(1):减少Draw Call
- unity3d移动平台性能优化专题(6):动画优化
- unity3d移动平台性能优化专题16:性能优化实战之20个复杂单位战斗
- unity3d移动平台性能优化(13):对比法优化
- 移动平台Unity3D 应用性能优化
- 移动平台Unity3D 应用性能优化
- 移动平台 Unity3D 应用性能优化
- unity3d移动平台性能优化(9):为了好一点的图形效果可以酌情做哪些,哪些必须避免。
- unity3d移动平台性能优化(5):音频优化
- 移动平台Unity3D 应用性能优化
- unity3d移动平台性能优化15:UIGrid优化
- unity3d移动平台优化专题(2):不要使用实时光照