Unity3D UIGrid 排序、动态加载与销毁
发表于2015-07-31
做 UIGrid 的动态加载是做游戏的装备列表时用到的,装备信息都是从后台发过来的,具体加载的代码如下:
for(int i = 0 ; i < itemData.Item_List.Count; i++) { Data dataMgr = (Data)itemData.Item_List; setGridDataIconImage(dataMgr);}private void setGridDataIconImage(Data Obj){ grid = GameObject.Find("UIGrid").GetComponent<UIGrid>(); atlas = Resources.Load("Equip/Equip_Atlas", typeof(UIAtlas)) as UIAtlas; parent = GameObject.Find("UIGrid"); GameObject o = Resources.Load("EquipItem_prefab")as GameObject; Item item = o.GetComponent<Item>(); if (null == equipStoreObj) { item.isRemoveItem = true; } else{ item.s_item_id = equipStoreObj.store_itemID; item.s_info1 = equipStoreObj.store_info1; item.s_info2 = equipStoreObj.store_info2; m_MainModel.getAtlasNameAndSpriteImageNameFromEquipID(equipStoreObj.info1,ref item.atlasName,ref item.spriteImageName); } item.Equip.MakePixelPerfect(); NGUITools.AddChild(parent, o); //列表添加后用于刷新listView grid.repositionNow = true; grid.maxPerLine = 5; //重设uigrid grid.Reposition();}最大的问题出在下面,就是当我需要更新 UIGrid的时候 我需要销毁旧的,加入新的 List 内容,现在正确的写法如下public void sortLv() { // 销毁现有元素 while (grid.transform.childCount > 0) { DestroyImmediate(grid.transform.GetChild(0).gameObject); } // 加入新元素 for (int i = 0; i < itemData.Item_Equip_Store_List.Count; i++) { EquipDataManager equipTable = itemData.Item_Equip_Store_List; setGridDataIconImage(equipTable); } }开始我使用了 for 循环来完成删除 |
