Unity教程之-Unity3d移动平台性能优化专题(十):大量物体的处理

 

上篇文章《Unity教程之-Unity3d移动平台性能优化(九):图形显示效果优化》,本篇文章我们继续探讨优化策略:

对于大量物体的处理,势必出现性能瓶颈,怎么采用折中的方式提升性能同时又不会明显降低表现形式是一个重要的问题。

同时在屏幕上呈现数百旋转、动态光照、金币收集。

  • 不可以:每个金币都是一个附有刚体和脚本的独立对象,以旋转并允许拾起金币。
  • 可以:金币是带动画纹理的粒子系统,一个脚本对所有金币进行碰撞检测,并按照它们与光源的距离设置颜色。

这是一个常见的案例,应该尽量在一个代码块中处理大量的对象,而不是让每个对象都自顾自的处理。

您的定制软体模拟

  • 不可以:这是一个枕头的世界,您可以到处乱扔并将其堆在一起。
  • 可以:您的角色就是一个枕头,且只是其中一个,它所处的环境在某种程度上是可以预测的(它仅仅与球体和轴对齐立方体碰撞)。对于功能并非全面,但是外观精致运行快速的软体模拟,可以为其编写代码。

30 个敌人角色同时向玩家射击

  • 不可以:每个敌人都有自己的蒙皮网格,拥有独立对象的武器,并在每次射击时实例化基于刚体的爆弹。在每帧运行的复杂的 AI 脚本中,每个敌人都考虑到其他同伴所处的状态。
  • 可以:大部分敌人距离很远,并且由单个子画面作为代表;或者,敌人是二维角色且不管如何只有一对子画面。每颗敌人的子弹都由同样的粒子系统绘制,并由只由处理基础物理的脚本模拟。每个敌人都按照该区域内其他敌人的状态,每秒更新两次 AI 状态。

这个AI的问题暂时不深入探讨。 对于大量的AI单元,让每一个AI都进行复杂思考是不切实际的。但具体的优化方案会十分复杂,单独在后面开启一个专题。

好了,本篇关于unity优化的文章到此结束,下篇我们再会!