我知道 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);
我尝试了一些其他的东西,但我不记得它们和大多数返回的错误
任何帮助将不胜感激!
不幸的是,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 将为您提供范围,即每个轴在上述字段中显示的内容的一半。