如何访问 Probuilder 的实际对象大小而不是 Unity3D 中的 Units 对象大小?

问题描述 投票:0回答:1

我知道 Unity,我正在尝试为我正在开发的 3D 游戏找到 probuilder 对象的比例

我试图访问的信息就在这里,所以它应该是可能的(x、y、z 的“ObjectSize(只读)”变量)

我只需要将不同的比例存储在一个变量中,这样我就可以继续我的程序,而不必自己在 SerializedField 中手动输入数据。

我试过以下方法:

DebugLog(transform.localScale);
private ProBuilderMesh objects
objects = GetComponent<ProBuilderMesh>();
Debug.Log(objects.transform.localScale)
var objects = GetComponent<Renderer>();
var bounds = objects.bounds;
Debug.Log(bounds);

我尝试了一些其他的东西,但我不记得它们和大多数返回的错误

任何帮助将不胜感激!

unity3d
1个回答
0
投票

不幸的是,ProBuilder 不遵循其暴露的 API 的常规约定,因此 ObjectSize 不是暴露的属性,ProBuilder MeshFilter 也不是,MeshFilter(如果你右键单击 -> 编辑脚本,你会看到它带你到一个类称为 ProBuilderMesh)。此外,ProBuilderShape 类是私有和密封的,因此无法在您的脚本中引用它。

无论如何,在这两种情况下,您看到的 Size 来自 Renderer Bounds。 在下图中,您可以看到一个由 ProBuilder 创建的新形状。它还附有 ProBuilderShape。

ProBuilderShape 中的大小是网格本身占据的大小,如果它具有比例 1,1,1。 ProBuilderMeshFilter 中的 ObjectSize 是 ProBuilderShape 的值按 0.29 缩放(709.4 * 0.29 = 205.726)。

当你只有一个没有 ProBuilderShape 的 ProBuilderMeshFilter 组件时,同样的事情也适用。 ObjectSize 是受比例影响的 Renderer.Bounds。

请注意,Renderer.Bounds 将为您提供范围,即每个轴在上述字段中显示的内容的一半。

© www.soinside.com 2019 - 2024. All rights reserved.