2017-06-06 84 views
0

我使用的是Unity 5.5.2f和NGUI 3.9.4,我想利用NGUI的Grid來自動排列物品以完美顯示。Unity將內容動態地添加到NGUI網格

問題是,當我在層次結構中手動添加項目時,事情會正常工作,但是當我通過腳本添加項目時,網格不會安排我的項目。

這裏是我用來添加項目到關卡板的代碼。 enter image description here

void Start() { 

     List<Level> levels = ApplicationModel.Levels; 
     GameObject currentWrap = null; 
     Debug.LogWarning(levels.Count); 
     for (int i = 0; i < levels.Count; i++) 
     { 
      if(i%4 == 0){ 

       currentWrap = Instantiate(levelWrap,transform,false); 

      } 
      if (levels[i].IsLock){ 

       GameObject go = Instantiate(levelLocked, currentWrap.transform, false); 
       go.transform.localPosition = new Vector3(levelXstart + (i % 4) * levelXOffset, 0, 0); 

       go.transform.GetComponentInChildren<UILabel>().text = i.ToString(); 
      } 
      else 
      { 

       GameObject go = Instantiate(levelActive, currentWrap.transform, false); 
       go.transform.localPosition = new Vector3(levelXstart + (i % 4) * levelXOffset, 0, 0); 
       go.transform.GetComponentInChildren<UILabel>().text = i.ToString(); 
       for (int j = 0; j < levels[i].StarGet;j++){ 
        go.transform.Find("fills").GetChild(j).gameObject.SetActive(true); 
       } 

      } 
     } 

    } 

回答

0

好吧,我找到了竅門,以後實例化包裝項目,我應該AddChild()網格系統。

if(i%4 == 0) 
{     
    currentWrap = Instantiate(levelWrap,transform,false); 
    GetComponent<UIGrid>().AddChild(currentWrap.transform); 
}