Unity优化翻译官方文档(十) ------ Physics Profiler

官方文档 : https://docs.unity3d.com/Manual/ProfilerPhysics.html


物理分析器显示物理引擎在您的场景中处理的物理统计信息。这些信息可以帮助您诊断和解决与您的场景中物理相关的性能问题或意外的差异。

Unity优化翻译官方文档(十) ------ Physics Profiler

1.Properties

Property Function
Active Dynamic 未休眠的非运动性硬体组件的数量。
Active Kinematic 未休眠的运动性硬体组件的数量。请注意,带有接头的运动刚性构件可以在每个帧上多次处理,这有助于显示所显示的数字。当在一个框架中调用移动位置或移动时,一个运动学刚构体是活动的,并且在下一帧中保持活跃。
Static Colliders 在GameObjects上的Collider components的数量,它们没有连接到游戏对象或它们的父配子的硬体组件。如果这样的游戏对象或它们的父配子具有刚体组件,那么对撞机就不会被算作静态的碰撞器。这些碰撞器被称为复合对撞机。这些有助于以一种方便的方式安排一个身体的多个碰撞器,而不是把所有的对撞机都放在同一个配子上,就像刚体的组件一样。
Rigidbody 由物理引擎处理的刚性部件的数量,不管组件的睡眠状态如何。
Trigger Overlaps 重叠触发器的数量(成对计数)。
Active Constraints 由物理引擎处理的原始约束的数量。约束被用作关节的构造块和碰撞响应。例如,限制可配置关节的线性或旋转*度涉及每个限制的原始约束。
Contacts 在现场所有的碰撞器之间的接触对总数,包括触发重叠对的数量。请注意,一旦它们之间的距离低于某个用户可配置的限制,那么就会创建每个对撞机的接触对,因此您可能会看到为尚未接触或重叠的刚体组件生成的联系人。请参阅“碰撞”、“接触”和“接触点”。更多细节的分离。

注意:

这些数字可能与你的场景中物理组件的确切数字不一致。这是因为一些物理组件以不同的速率处理,这取决于其他组件对它的影响(例如,一个附加的联合组件)。要计算带有特定物理组件的配子的确切数量,使用FindObjectsOfType函数编写一个定制脚本。

物理分析器没有显示睡眠的硬体组件的数量。这些组件不涉及物理引擎,因此不会被物理分析器处理。参考刚体概述:睡眠中更多关于睡眠刚体成分的信息。

2.使用物理分析器来理解性能问题

物理模拟在一个单独的固定频率更新周期中运行,从主逻辑的更新循环中运行,并且只能通过一个时间来提高时间Time.fixedDeltaTime 。这类似于Update()和FixedUpdate()之间的区别(请参阅 Time Manager的文档)。

当一个重的逻辑或图形框架发生时,需要很长时间,物理分析器必须在每个帧上多次调用物理模拟。这意味着一个资源密集型的框架需要花费更多的时间和资源,这很容易导致物理模拟由于最大允许的时间步值而临时停止(可以在编辑项目设置中设置Edit > Project Settings)。

您可以通过选择CPU Usage Profiler并检查物理调用的数量来检测您的项目中的这一点。处理或物理。在概述部分进行模拟。

Unity优化翻译官方文档(十) ------ Physics Profiler

在这个例子中,调用列中的1的值表明,物理模拟在最后一个逻辑框架中被调用一次。

 call 数接近10可能表明了一个问题。作为第一个解决方案,减少物理模拟的频率;如果这个问题还在继续,那么在物理分析器必须使用许多模拟调用来赶上游戏时间之前,检查一下可能会导致重帧的原因。有时,一个重的图形框架可能会在稍后的场景中引起更多的物理模拟调用。

 要了解更多关于你场景中的物理模拟的详细信息,请点击“三角箭头”来扩展物理。如上面的截图所示。这显示了运行更新场景的物理引擎任务的实际名称。你可能看到的两个最常见的名字是:

  • Pxs: “PhysX solver”,它是关节需要的物理引擎任务,同时也解决了重叠身体的接触问题。

  • ScScene: 用于更新场景所需的任务,运行宽相和窄相,以及整合身体(由于力量和冲动将它们移动到空间中)。参见 Steven M. LaValle’s work on Planning Algorithms 在两阶段碰撞检测阶段的定义算法的工作。