NGUI用UIGrid加载Item会有部分空出来的解决办法----------------NGUI 3.8.0
先描述碰到的问题
我的Hierarchy
加载用的方法是如果加载的数据数多于已经存在的Item的数量,就创建;如果少于已经存在的Item的数量就把多余的隐藏起来;
但是在运行的时候会出现下图的情况
有一部分空了出来;
我想应该那部分空出来的是被隐藏的部分,于是在每次赋值的时候都给UIGrid Reposition了一下,但是还是不行
解决办法:
UIGrid下有个选项Hide Inactive ,非活动状态隐藏
勾选后
自动把隐藏部分占用的空间挤了出来
另附加载代码
----->数据多于激活的Item
1 Listlist = FindAll();//所有现存Item的集合 2 var listA = list.Where (s => s.gameObject.activeSelf == true);//激活的 3 var listD = list.Where (d => d.gameObject.activeSelf == false);//未激活的 4 5 if (itemList.Count>=listA.Count())//如果现有的item不足或是正好那么多 6 { 7 Transform[] trs = listA.ToArray(); 8 //把现有的激活的item先利用上 9 for (int i = 0; i < trs.Length; i++)10 {11 trs[i].GetComponent ().rawdata = itemList[i];12 }13 14 15 //不够?把现有的隐藏的item激活了来利用16 Transform[] trd = listD.ToArray();17 for (int i = 0; i ().rawdata = itemList[i + trs.Length];21 }22 23 24 //还不够?new出来25 for (int i = 0; i < itemList.Count - trd.Length - listA.Count(); i++)26 {27 GameObject itemPre = Resources.Load("Backpack/Item") as GameObject;28 NGUITools.AddChild(grid.gameObject, itemPre).GetComponent ().rawdata = itemList[i + trs.Length+trd.Length];29 }30 }
------->数据少于激活的Item,就把没有用到的Item隐藏
else if (itemList.Count().rawdata = itemList[i]; print(2); } else if(i>=itemList.Count) { listA.ElementAt(i-1).gameObject.SetActive(false); print(1); } print(3); } } grid.repositionNow = true;