渲染器在世界空间中的包围盒。
这是完全包围世界空间中对象的轴对齐包围盒。
使用 bounds
可以方便地对对象的定位和范围进行粗略估算。例如,center
属性通常比 Transform.position 更准确地估计对象的中心,尤其是当对象不对称时。
Mesh.bounds 和 localBounds 类似,但它们返回局部空间中的包围盒。
您可以通过设置自己的世界空间包围盒来覆盖默认包围盒。这在渲染器使用自定义顶点变形着色器且默认包围盒不准确时很有用。
当您设置自定义世界包围盒时,渲染器包围体不再自动跟踪 Transform 组件更改。如果同时存在局部空间包围体覆盖 (localBounds),则会忽略它并使用自定义世界空间包围盒。使用 ResetBounds 删除自定义包围盒覆盖。请注意,自定义世界包围盒值不会保存到场景或预制体中,必须在运行时从脚本中设置。
using UnityEngine;
public class DrawRendererBounds : MonoBehaviour { // Draws a wireframe box around the selected object, // indicating world space bounding volume. public void OnDrawGizmosSelected() { var r = GetComponent<Renderer>(); if (r == null) return; var bounds = r.bounds; Gizmos.matrix = Matrix4x4.identity; Gizmos.color = Color.blue; Gizmos.DrawWireCube(bounds.center, bounds.extents * 2); } }