版本: Unity 6 (6000.0)
语言英语
  • C#

Renderer.bounds

建议修改

成功!

感谢您帮助我们提升 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每项建议,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您的建议修改无法提交。请在几分钟后 关闭

取消

public Bounds bounds;

描述

渲染器在世界空间中的包围盒。

这是完全包围世界空间中对象的轴对齐包围盒。

使用 bounds 可以方便地对对象的定位和范围进行粗略估算。例如,center 属性通常比 Transform.position 更准确地估计对象的中心,尤其是当对象不对称时。

Mesh.boundslocalBounds 类似,但它们返回局部空间中的包围盒。

您可以通过设置自己的世界空间包围盒来覆盖默认包围盒。这在渲染器使用自定义顶点变形着色器且默认包围盒不准确时很有用。

当您设置自定义世界包围盒时,渲染器包围体不再自动跟踪 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); } }

其他资源:ResetBoundslocalBoundsBoundsMesh.bounds.