UI GameObject (Button prefab) 实例化时随机改变 Z 轴 RectTransform (UNITY)
UI GameObject (Button prefab) randomly changing Z axis RectTransform when instantiated (UNITY)
我试图在 canvas 的子项中实例化一个预制按钮。它的 x 和 y 轴保持不变,但 Z 轴表现得很奇怪。由于某种原因它变成了 -800,我不明白为什么。这是代码:
当我按下播放键时,结果如下:
如您所见,即使我将 rectTransform 设置为其他值,它仍然变为 -800(我希望它为 0 或任何我想要的值。)。任何帮助,将不胜感激。非常感谢,保重。
您在 RectTransform(和 Transform)中看到的位置是本地位置。当您实例化一个对象,并将其作为另一个 Transform 的父级时,本地位置将被更新以将对象保持在实例化的位置。它通过修改本地位置来实现。另一种看待它的方式,你实例化对象的世界位置,在你成为它的父级后仍然是一样的。
Instantiate
方法有一个接受 bool InsantaiteInWorldSpace
的重载,但看起来您想自己设置一些位置。在这种情况下,Transform
也有一个方法 SetParent
,它也有一个重载接受 bool worldPositionStays
。您可以访问 SetParent
here.
的 Unity 文档页面
在后一种情况下,您不会在实例化期间设置父对象,而是在之后设置 bool 以将对象保持在您手动设置的位置。这完全取决于您希望如何根据您的层次结构定位您的项目。
我试图在 canvas 的子项中实例化一个预制按钮。它的 x 和 y 轴保持不变,但 Z 轴表现得很奇怪。由于某种原因它变成了 -800,我不明白为什么。这是代码:
当我按下播放键时,结果如下:
如您所见,即使我将 rectTransform 设置为其他值,它仍然变为 -800(我希望它为 0 或任何我想要的值。)。任何帮助,将不胜感激。非常感谢,保重。
您在 RectTransform(和 Transform)中看到的位置是本地位置。当您实例化一个对象,并将其作为另一个 Transform 的父级时,本地位置将被更新以将对象保持在实例化的位置。它通过修改本地位置来实现。另一种看待它的方式,你实例化对象的世界位置,在你成为它的父级后仍然是一样的。
Instantiate
方法有一个接受 bool InsantaiteInWorldSpace
的重载,但看起来您想自己设置一些位置。在这种情况下,Transform
也有一个方法 SetParent
,它也有一个重载接受 bool worldPositionStays
。您可以访问 SetParent
here.
在后一种情况下,您不会在实例化期间设置父对象,而是在之后设置 bool 以将对象保持在您手动设置的位置。这完全取决于您希望如何根据您的层次结构定位您的项目。