2017-06-06 151 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); 
}