在做项目的时候发现 有很多诸如图片之类的东西需要在程序运行的时候动态加载,那么用NGUI自带的ScrollViewll来实现这个功能是比较好的,但是我不清楚程序在运行的时候到底需要加载多少个这样的对象,因为我们的程序是从服务器上去寻找我们要加载的对象。比如说动态的加载一页的图片,当然这一页上边可以加载很多的图片咯。怎么把这些图片同过一种比较好的方式加载呢 代码如下:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public static class NGUIUtils
{
public static void SetItemNumber(this UIGrid grid, int number)
{
int cNum = grid.transform.childCount;
if (cNum > 0)
{
List<GameObject> children = new List<GameObject>();
for (int i = 0; i < cNum; i++)
children.Add(grid.transform.GetChild(i).gameObject);
GameObject pItem = children[0];
if (number > cNum)
{
foreach (GameObject s in children) s.SetActive(true);
for (int i = cNum; i < number; i++)
{
GameObject selector = UnityEngine.Object.Instantiate(pItem) as GameObject;
selector.transform.parent = grid.transform;
selector.transform.localPosition = new Vector3();
selector.transform.localScale = new Vector3(1, 1, 1);
}
}
else if (number < cNum)
{
foreach (GameObject s in children) s.SetActive(true);
for (int i = cNum - 1; i >= number; i--)
{
GameObject selector = children[i];
selector.SetActive(false);
}
if (number == 0) pItem.SetActive(false);
}
else if (number == cNum)
{
foreach (GameObject obj in children) obj.SetActive(true);
}
else
{
foreach (GameObject obj in children) obj.SetActive(false);
pItem.SetActive(false);
}
grid.repositionNow = true;
}
}
}
这是一个关于多个Grid加载的类,因为是静态类型的,所以放在你的项目中,直接通过Grid申请的变量调用就是了。