Version: 6000.3
语言: 中文
手动设置物理模拟
优化转换值同步

优化纯查询或非模拟游戏的物理

通过将 模拟模式(Simulation Mode) 更改为 脚本(Script) 来防止默认物理更新循环运行,以减少不必要的性能开销。

如果你的游戏不需要对默认物理进行物理模拟,那么阻止默认物理更新循环运行可能是有益的场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
.例如,您的游戏可能只需要物理查询,例如光线投射、球体投射或重叠检查,但不需要刚体允许游戏对象受到模拟重力和其他力影响的组件。更多信息
请参阅术语表
具有力、重力或物理驱动运动的组件。

此方法使用物理查询碰撞当物理引擎检测到两个游戏对象的碰撞器接触或重叠时,当至少一个游戏对象具有刚体组件并且处于运动状态时,就会发生碰撞。更多信息
请参阅术语表
检测或环境交互,而无需进行完整物理模拟的性能成本,并且它保持对变换数据同步时间的控制。

如果将默认场景的 模拟模式(Simulation Mode) 设置为 脚本(Script),请注意以下事项:

  • 物理查询仍然通过检查物理世界的表示来运行碰撞体 用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格体形状完全相同 - 在游戏中,粗略的近似值通常更有效且难以区分。更多信息
    请参阅术语表
    .
  • 如果场景中有通过直接纵其Transform组件,它们在物理引擎模拟物理系统各个方面的系统,使物体能够正确加速并受到碰撞、重力和其他力的影响。更多信息
    请参阅术语表
    的内部空间数据结构不会自动更新以匹配其Transform逐帧定位(因为在此模式下默认情况下不发生模拟步骤)。
  • 为了确保针对这些碰撞体的光线投射和其他查询准确无误,假设Physics.autoSyncTransformsfalse(其默认和推荐设置),您必须手动调用Physics.SyncTransforms在执行查询之前,每帧一次。此函数显式更新物理系统,其中包含游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
    请参阅术语表
    有碰撞器。
  • 如果Physics.autoSyncTransforms设置为true,则此同步在每次查询之前隐式发生,但对于每次查询之前同步的潜在开销,这通常不是推荐的最佳实践。请注意Physics.autoSyncTransforms已弃用。若要了解如何同步转换,请参阅优化转换值同步。
  • 没有显式Physics.SyncTransforms调用(当autoSyncTransformsfalse),查询可能会使用过时的对象位置并导致不正确的结果。

要防止默认物理更新在编辑器中运行,请执行以下作:

  1. 选择 编辑(Edit) > 项目设置(Project Settings) 以打开 项目设置(Project Settings) 窗口。
  2. 选择 物理>设置(Physics Settings) 选项卡。
  3. 选择“游戏对象”选项卡。
  4. 模拟模式(Simulation Mode) 设置为 脚本(Script)。

要在脚本中禁用自动模拟,请将Physics.simulationMode = SimulationMode.Script;在运行时。

其他资源

手动设置物理模拟
优化转换值同步