2017-09-25 50 views
1

我正在使用Unity UI。当父母在运行时更改位置时,UI元素的子元素不会更改localPostion

我有父母,包括图像和子图像 - 所有课程的帆布内。

我使用从父产卵敌人的子图像的位置。

当我在运行时移动父图像,并期待在检查我期望看到孩子的位置也与父移动(所以它会催生在正确的位置上的敌人),但事实并非如此。

子图像并与现场查看父移动,但孩子的RectTransform的LocalPostion不与父母发生变化,所以我可以在正确的位置不产卵。

我想我失去了一些东西......

回答

2

场景中的任何元素的本地位置是相对于其父的位置,这就是“地方”的意思。

元素的最后一个世界上的地位是其相对于它的父母世界位置附近的位置。

假设没有旋转/缩放介入,那么世界上的位置被定义为:

transform.position = transform.parent.position + transform.localPosition 

所以你看到的是什么,是可以预期的。

+0

呀,它的工作,谢谢!。从某种原因,我补充一点,孩子的位置应该更新基于父位置,而不需要你写的代码部分的记忆。 – Dror

+0

或者,您可以使用['transform.TransformPoint()'](https://docs.unity3d.com/ScriptReference/Transform.TransformPoint.html)。如果存在多个层次的亲子关系,并且您想要返回到场景空间坐标,那么这很有用。 – Draco18s

+0

不要误解我的意思,你不需要在任何地方添加我的答案,Unity会在后台为所有元素自动执行此操作。我只是写了解释它是如何工作的。 –