Optimize CPU performance by selecting the most appropriate collider type for your scene.
Choosing the right collider type directly affects CPU performance. Unity has several collider types, each with different computational costs.
To learn more about Mesh Collider component properties, refer to Mesh collider component reference.
To learn more about collider interactions, refer to Collider interactions.
The following table summarizes the collider types and their performance characteristics in order from most to least performant:
| Collider type | Performance characteristics |
|---|---|
| Sphere Collider | The simplest and most efficient collider. Use for round objects and general-purpose interactions. |
| Capsule Collider | Slightly more complex than a Sphere Collider, but still efficient. Use for characters, poles, or other elongated shapes. |
| Box Collider | Efficient and flexible, especially for rectangular or block-shaped objects. Slightly more resource-intensive than Sphere Collider or Capsule Collider. |
| Convex Mesh Collider | More resource-intensive than primitive colliders. Use only when primitive shapes or compound colliders cannot approximate the geometry. The mesh must be convex. You can attach this to__ GameObjects__Unity 场景中的基础对象,可以表示角色、道具、风景、摄像机、路径点等。GameObject 的功能由所附的组件决定。更多信息 See in Glossary with non-kinematic Rigidbody components attached. |
| Non-convex Mesh Collider | A Mesh Collider with Convex unchecked. The most resource-intensive collider type. Use only for static, non-moving geometry that requires precise collision surfaces. Cannot be attached to non-kinematic Rigidbodies. |
Compound colliders are formed by parenting multiple primitive colliders, such as Sphere, Box, and Capsule colliders, to a single GameObject with a Rigidbody component. You can use compound colliders, which are comprised of simple components, to approximate complex shapes. Compound colliders are generally more efficient than using a single, complex Mesh Collider for a dynamic object, but they’re more resource-intensive than a single primitive collider.
Use as few primitive colliders as possible within a compound setup to have effective collision detection.
To learn more about compound colliders, refer to Compound colliders.
Use Compound colliders when:
Rigidbody cannot do because a single Mesh Collider must be convex.
Mesh Collider components require a preprocessing step called “mesh cooking” to convert their geometry into an optimized format for efficient physics calculations. If this cooking occurs at runtime, it can cause significant CPU performance spikes.
To learn more about Mesh Collider components, refer to Mesh colliders.
You can avoid mesh cooking at runtime by doing the following:
Physics.BakeMesh for all dynamic cases and you want to potentially reduce build and Editor processing times.Physics.BakeMesh: For meshes assigned or procedurally generated at runtime, use Physics.BakeMesh(meshInstanceId, convex, cookingOptions) to explicitly control when cooking occurs. Preferably use Physics.BakeMesh during loading screens or in background threads if you use the job system.