游戏开发实践大问题:碰撞性能优化
来源:www.dyid168.com
作者:敢想数字
时间:2017-07-28
在游戏开发中,我们与最雄心勃勃的Unity开发人员合作,努力推动Unity游戏的界限。我们看到各种游戏开发创新和辉煌的解决方案,用于复杂的图形,性能和设计问题。我们也看到同样游戏开发的问题和解决方案一再出现。
许多碰撞性能优化这些问题只有在您在控制台或手机上工作或处理大量游戏内容时才会变得明显。如果您在开发周期中考虑这些课程,您可以使您的生活更轻松,您的游戏更加雄心勃勃。
大问题
偶尔,我们可以将物理性能问题跟踪到单个问题资产或设置。注意这些的最好方法是定期运行Profiler并与之前的运行进行比较。如果您早日赶上绩效回归,那么很容易就可以了解最近的变化并发现问题。
虽然简单的物理联系可以相当快,但是游戏开发底层的数学是非常复杂的。实质上,一个联合是为您的刚体的位置,速度,加速度,旋转等建立一个方程组。如果您设置了许多不同的刚体与许多不同的关节 - 所有这些都碰撞,所有这些都需要以满足他们关节的要求,而不是穿透碰撞 - 它可以非常快地非常昂贵。
游戏开发实践大问题:碰撞性能优化
在游戏开发建立复杂的联合计划时,要认真关注你需要多少关节,你需要什么样的碰撞,以及需要几个刚体。您可以使用图层来屏蔽不必要的碰撞,并且关节具有应该非常谨慎地使用的允许碰撞复选框。您可以通过约束关节的运动范围来减少需要检测的碰撞量。调整关节,使碰撞不太可能或不可能,您不再需要检测。通过使用它们作为插补方法的控制点,可以减少关节和刚体的数量。
游戏运行中,Profiler屏幕将显示您在任何给定时间有多少Rigidbodies活动。密切注意这个数字。刚体计数,特别是如果彼此靠近,可能对性能有很大的影响。在运行时放置对象或产生物体时,这个数字比您预期的要多得多。虽然一罐苏打水就没有问题,但试图让超级市场显示金字塔与同样的Prefab会导致问题。
请注意您添加到游戏中的任何MeshColliders。简单地使用视觉网格进行碰撞是很容易的,但这可能会导致显着的性能下降,并不总是以明显的方式。 好,只是测试它绝对有什么。因此,如果您将一个较小的对象添加到高度碰撞,或者不合适,那么它可能会正常工作。然而,当您扩展相同的MeshCollider并将其放置在RayCast常见的地方时,您可以看到您的性能突然下降。作为一般规则,为要在默认层中的任何对象创建自定义的低多边形碰撞网格,或者可以与大多数事物相冲突。如果你发现一个特定的网格是一个问题,不想或不想花时间做一个自定义的网格,你可以使该MeshCollider凸起并调整SkinWidth获得一个自动生成的较低的多重碰撞网格。