游戏对象的宽度和高度在Unity中如何设置?

12

我在Unity中有以下的游戏物体:

图片描述

我需要从C#中获取它的宽度和高度。

2个回答

14

有两种可能的方法来实现这个。如果你的对象有一个渲染器,你可以使用renderer.bounds.size,它将返回一个包含高度和宽度(如果是3D,则还有深度)的向量。

你也可以从gameObject上的colliders中获得宽度和高度,方法是使用collider.bounds.size。试试这样做:

public Vector3 size;
private MeshRenderer renderer;

private void Start() {
    renderer = GetComponent<MeshRenderer>();
    size = renderer.bounds.size;
}
希望这有所帮助!

6

GameObject没有宽度或高度,但其包含的信息可以有。在您的情况下,您有一个MeshRenderer,它恰好具有bounds属性,该属性将返回一个轴对齐的边界框,完全囊括了对象在世界空间中的位置。

如果您已经引用该对象上的MeshRenderer

MeshRenderer renderer;

那么获取边界值就很简单了,只需要:
renderer.bounds;

然后你可以观察它的size属性。


请记住这是世界空间边界信息,因此所有旋转和缩放都会影响它。如果您想获得网格本身的原始细节,您需要引用MeshFilter,查看其mesh属性,并在Mesh对象上使用bounds属性。


1
它是否考虑了 transform.scale 和 transform.localScale? - Kamran Bigdely
1
@KamranBigdely 是的。我已更新我的答案,还包括如何获取原始“Mesh”对象本身的边界细节信息,这不考虑任何变换细节。 - Foggzie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接