[英]unity2d transform and position of instantiated UI object
public static Object Instantiate(Object original, Transform parent);
如果我實例化一個預制並傳遞一個變換作為第二個參數,那么新實例化的游戲對象將是傳遞的變換的特定游戲對象的子對象,對嗎? 但是我認為應該根據父對象調整新實例化的游戲對象的位置。
我將UI-Image制作為預制件:posX,posY的配置和錨定如下:
在層次結構中:
以及實例化的C#腳本片段:
GameObject pageIcon = transform.parent.FindChild("PageIcon").gameObject;
Instantiate(unSelectDot, pageIcon.transform);
為什么會這樣呢? 誰改變了PosX和PosY? 我誤會了嗎?
該問題的解決方案取決於您的Unity版本。
在Unity 5.5之前,當您進行Instantiate(unSelectDot, pageIcon.transform);
,GameOject將在世界空間中實例化,而不是在預制件中定位。
從Unity 5.5及更高版本開始,當您Instantiate(unSelectDot, pageIcon.transform);
,默認情況下,GameOject將使用Object位置作為本地位置。
您很有可能在Unity 5.5
下使用Unity版本。 在這種情況下,將false
傳遞給Instantiate
函數的第三個參數。
Instantiate(unSelectDot, pageIcon.transform, false);
如果這不起作用,請嘗試true
。 雖然, false
應該這樣做。
Unity 5.5 版本中的注釋注意 :
核心:使用Object.Instantiate(Object,Transform)現在將默認使用Object位置作為本地位置。 這與5.4行為不同,后者使用“對象”位置作為世界。
我想實例化一個相對於其父對象的對象時所要做的事情是:
Instantiate(unSelectDot, GameObject.Find("PageIcon").transform);
試試這個,希望它對您有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.