2017-09-25 102 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會在後臺爲所有元素自動執行此操作。我只是寫了解釋它是如何工作的。 –