uGUI動態加載控件位置錯誤


最近在使用uGUI時遇到了一個問題,在此記錄一下。
在Canvas的Render Mode設置爲Screen Space-Overlay模式時,動態加載控件是不會發生問題的。可是在Screen Space-Camera模式下,動態加載的控件位置及縮放會有很大的誤差。html

private Canvas canvas;
// Use this for initialization
void Start () 
{
   canvas = GameObject.FindObjectOfType<Canvas>();
   GameObject button = GameObject.Instantiate(Resources.Load("UI/Button")) as GameObject;
   button.transform.parent = canvas.transform;
} 

運行結果:canvas

看不清就對了,由於放大了66倍...ui

原本心想查看源碼,查找問題的緣由,尼瑪在 bitbucket上的官方庫裏找半天沒找到Canvas的源碼,後來仔細一看原來Canvas是UnityEngine.dll下的。必定是逗我...說好的,開源呢...this

無耐求助於萬能的Google,終於找到了這個uGui alignment is wrong when adding prefabs to canvasspa

private Canvas canvas;
// Use this for initialization
void Start () 
{
    canvas = GameObject.FindObjectOfType<Canvas>();
    GameObject button = GameObject.Instantiate(Resources.Load("UI/Button")) as GameObject;
    //button.transform.parent = canvas.transform;
    button.transform.SetParent(canvas.transform,false);//不受父節點的影響,保持原局部座標和縮放
}

就是這樣。3d

相關文章
相關標籤/搜索