Version: 6000.3
语言: 中文
选择宽相修剪算法
配置网格体碰撞体组件烘焙选项以进行优化

碰撞体类型和性能

通过选择最合适的来优化 CPU 性能collider 用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格体形状完全相同 - 在游戏中,粗略的近似值通常更有效且难以区分。更多信息
请参阅术语表
类型场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
.

选择正确的碰撞器类型直接影响CPU性能。Unity 有多种碰撞器类型,每种碰撞器类型都有不同的计算成本。

要了解更多网格Unity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表
对撞机
组件属性,请参阅网格碰撞器组件参考

要了解有关碰撞体交互的更多信息,请参阅碰撞体交互。

下表汇总了碰撞器类型及其性能特征,按性能从高到低的顺序排列:

对撞机类型 性能特点
球体碰撞体球体形状的碰撞器组件,用于处理游戏对象(如球或其他出于物理目的可以大致近似为球体)的碰撞。更多信息
请参阅术语表
最简单、最高效的对撞机。用于圆形对象和通用交互。
胶囊碰撞器胶囊体形状的碰撞器组件,用于处理游戏对象(如桶和角色肢体)的碰撞。更多信息
请参阅术语表
比球体碰撞器稍微复杂一些,但仍然高效。用于字符、杆或其他细长形状。
Box Collider:立方体形状的碰撞器组件,用于处理骰子和冰块等游戏对象的碰撞。更多信息
请参阅术语表
高效灵活,特别适用于矩形或块状物体。比 Sphere Collider 或 Capsule Collider 稍微占用更多资源。
凸面网格碰撞体 比原始碰撞器更耗费资源。仅当基本形状或复合碰撞体无法近似几何体时使用。网格必须是凸的。您可以将其附加到游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
非运动学刚体允许游戏对象受到模拟重力和其他力影响的组件。更多信息
请参阅术语表
附加的组件。
非凸网格对撞机 未选中 凸(Convex) 的网格体碰撞体。资源最密集的碰撞器类型。仅用于需要精确的静态、非移动几何体碰撞当物理引擎检测到两个游戏对象的碰撞器接触或重叠时,当至少一个游戏对象具有刚体组件并且处于运动状态时,就会发生碰撞。更多信息
请参阅术语表
表面。不能附加到非运动刚体。

复合碰撞器

复合碰撞器是通过将多个基元碰撞器(例如 Sphere、Box 和 Capsule 碰撞器)父级设置为具有 Rigidbody 组件的单个游戏对象而形成的。您可以使用由简单组件组成的复合碰撞器来近似复杂形状。复合碰撞器通常比对动态对象使用单个复杂的网格体碰撞器更有效,但它们比单个图元碰撞器更占用资源。

在复合设置中使用尽可能少的原始碰撞器,以使碰撞检测Unity 执行的自动过程,用于确定具有刚体和碰撞器组件的移动游戏对象是否与任何其他碰撞器接触。更多信息
请参阅术语表
.

要了解有关复合碰撞器的更多信息,请参阅复合碰撞器。

在以下情况下使用复合碰撞器:

  • 您有一个对象,其形状无法由单个基本碰撞体准确表示。
  • 你有需要复杂碰撞形状但必须保持性能的动态对象(作为昂贵的凸面网格体碰撞器的替代方案)。
  • 你需要动态凹面碰撞形状,在动态Rigidbody不能这样做,因为单个网格体碰撞体必须是凸的。
  • 你需要微调碰撞区域才能玩游戏。例如,你在角色上有不同的头部、躯干或肢体碰撞箱。

为网格碰撞器准备网格

网格体碰撞体组件需要一个称为“网格体烘焙”的预处理步骤,以将其几何体转换为优化的格式,以实现高效的物理计算。如果此烘焙发生在运行时,可能会导致CPU性能显著峰值。

要了解有关网格体碰撞器组件的更多信息,请参阅网格碰撞器自由形状的碰撞器组件,它接受网格体参考来定义其碰撞表面形状。更多信息
请参阅术语表
.

您可以通过执行以下作来避免在运行时进行网格体烘焙:

  • 使用编辑器时间烘焙(隐式) :预烘焙网格体的主要方法是在编辑器中。将网格体资产分配给 网格体碰撞体(Mesh Collider) 组件时,在检查器一个Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    窗口并保存您的场景或预制件:一种资产类型,允许您存储包含组件和属性的游戏对象。预制件充当模板,你可以从中在场景中创建新的对象实例。更多信息
    请参阅术语表
    ,编辑器会自动为该特定碰撞体实例烘焙网格体。然后,烘焙数据将与你的资产一起保存。
  • 在 玩家(Player) 分段中启用预烘焙碰撞网格体(Enable Prebake Collision Meshes)项目设置(Project Settings) 广泛的设置集合,允许您配置物理、音频、网络、图形、输入和项目的许多其他区域的行为方式。更多信息
    请参阅术语表
    :启用 预烘焙碰撞网格体(Prebake Collision Meshes) ,使编辑器在构建、资产导入和编辑器加载期间主动查找并烘焙项目中网格体碰撞器组件使用的所有网格体。默认情况下,此设置处于启用状态。预烘焙碰撞网格体可以增加网格体处理过程中的构建时间和编辑器加载时间。烘焙数据会被存储,如果涉及许多独特的网格体,这会稍微影响构建大小,但主要的权衡是增加构建和加载持续时间与运行时稳定性。使用预烘焙碰撞网格体(Prebake Collision Meshes) 可确保大多数网格体都准备就绪,从而防止意外的运行时烘焙峰值。推荐的最佳实践是将预烘焙碰撞网格体作为安全网启用。仅当手动细致地管理所有网格体烘焙时,才考虑禁用预烘焙碰撞网格体。例如,你仅依赖编辑器时实例烘焙和Physics.BakeMesh适用于所有动态案例,并且您希望减少构建和编辑器处理时间。
  • Physics.BakeMesh:对于在运行时分配或程序生成的网格体,请使用Physics.BakeMesh(meshInstanceId, convex, cookingOptions)显式控制烹饪时间。优选使用Physics.BakeMesh在加载屏幕期间或后台线程中(如果您使用作业系统)。

其他资源

选择宽相修剪算法
配置网格体碰撞体组件烘焙选项以进行优化