Unity动态地向NGUI网格添加内容

时间:2017-06-06 01:48:29

标签: c# unity3d grid ngui

我正在使用Unity 5.5.2f和NGUI 3.9.4,我希望利用NGUI的Grid来自动整理项目。

当我在层次结构中手动添加项目时,事情会正常工作但是当我通过脚本添加项目时,网格将不会安排我的项目。

以下是我用于向水平板添加项目的代码。 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);
                }

            }
        }

    }

1 个答案:

答案 0 :(得分:0)

好的,我发现了这个技巧,在实例化包装项之后,我应该AddChild()到网格系统。

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