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 循环来完成删除
|