【发布时间】:2021-03-18 10:47:36
【问题描述】:
我试图在画布的子对象中实例化一个预制按钮。它的 x 和 y 轴保持不变,但 Z 轴表现得很奇怪。由于某种原因,它变成了-800,我不知道为什么。代码如下:
如您所见,即使我将 rectTransform 设置为其他值,它仍然变为 -800(我希望它为 0 或任何我想要的值。)。任何帮助,将不胜感激。非常感谢并保重。
【问题讨论】:
标签: unity3d user-interface photon
我试图在画布的子对象中实例化一个预制按钮。它的 x 和 y 轴保持不变,但 Z 轴表现得很奇怪。由于某种原因,它变成了-800,我不知道为什么。代码如下:
如您所见,即使我将 rectTransform 设置为其他值,它仍然变为 -800(我希望它为 0 或任何我想要的值。)。任何帮助,将不胜感激。非常感谢并保重。
【问题讨论】:
标签: unity3d user-interface photon
您在 RectTransform(和 Transform)中看到的位置是本地位置。当您实例化一个对象并将其作为另一个 Transform 的父对象时,本地位置将被更新以将对象保持在实例化位置。它通过修改本地位置来做到这一点。另一种看待它的方式,您实例化对象的世界位置,在您将其作为父对象后仍然相同。
Instantiate 方法有一个接受 bool InsantaiteInWorldSpace 的重载,但看起来您想自己设置一些位置。在这种情况下,Transform 也有一个方法SetParent,它也有一个接受布尔值worldPositionStays 的重载。您可以访问 SetParent here 的 Unity 文档页面。
在后一种情况下,您不会在实例化期间设置父对象,而是在之后设置 bool 以将对象保持在您手动设置的位置。这一切都取决于您希望如何根据您的层次结构定位您的项目。
【讨论】:
GetChild(0) 的行是否真的正确?