/// <summary> /// 使用kvData这个dic中的数据 /// 刷新kv区域ui /// </summary> /// <param name="kvData">Kv data.</param> private void RefreshKVListUI(Dictionary <int, KVData> kvData) { ClearKVListUI(); //创建新节点 int i = 0; //创建ui相关 foreach (KeyValuePair <int, KVData> p in kvData) { //Debug.Log("nafio--->k:"+p.Key+" v:"+p.Value); KVListItem keyItem = FreeItemPool.GetFreeItem(); if (!keyItem.gameObject.activeSelf) { keyItem.gameObject.SetActive(true); } keyItem.gameObject.name = p.Value.key; keyItem.IsKey = true; keyItem.Index = i; keyItem.TreeItemID = Convert.ToInt32(CurTreeItemID); //Debug.Log("==========>i:"+i+"====>CurItemID:"+CurTreeItemID); keyItem.SetContent(p.Value.key); keyItem.SetKVMgr(this); RectTransform keyRT = keyItem.gameObject.GetComponent <RectTransform>(); keyRT.SetParent(KeyParentTrm as Transform); keyRT.anchoredPosition = new Vector2(0, i * -1 * UIEnum.KVItemH); keyRT.offsetMax = new Vector2(-1, keyRT.offsetMax.y); keyRT.offsetMin = new Vector2(1, keyRT.offsetMin.y); KVListItem valueItem = FreeItemPool.GetFreeItem(); if (!valueItem.gameObject.activeSelf) { valueItem.gameObject.SetActive(true); } RectTransform valueRT = valueItem.gameObject.GetComponent <RectTransform>(); valueItem.gameObject.name = p.Value.value; valueItem.IsKey = false; valueItem.Index = i; valueItem.TreeItemID = Convert.ToInt32(CurTreeItemID); valueItem.SetContent(p.Value.value); //valueItem.DialogOpenType = p.Value.type; valueItem.SetKVMgr(this); valueRT.SetParent(ValueParentTrm as Transform); valueRT.anchoredPosition = new Vector2(0, i * -1 * UIEnum.KVItemH); valueRT.offsetMax = new Vector2(-1, valueRT.offsetMax.y); valueRT.offsetMin = new Vector2(1, valueRT.offsetMin.y); //keyItem.DialogOpenType = p.Value.type; keyItem.BrotherItem = valueItem; valueItem.BrotherItem = keyItem; i++; } float h = i * UIEnum.KVItemH; RefreshKVContainerArea(h); }
/// <summary> /// 清理掉kvitem UI /// </summary> public void ClearKVListUI() { //每次清理ui时把当前选择项置null否则切TreeItem时,当前选择项会出现混乱 CurSelectedKVItem = null; //清理旧节点 //清理key节点 int j = 0; KVListItem[] _tempItems = KeyParentTrm.GetComponentsInChildren <KVListItem>(); for (j = 0; j < _tempItems.Length; j++) { _tempItems [j].Reset(); FreeItemPool.PushFreeItem2Pool(_tempItems [j]); } _tempItems = null; //清理value节点 _tempItems = ValueParentTrm.GetComponentsInChildren <KVListItem>(); for (j = 0; j < _tempItems.Length; j++) { _tempItems [j].Reset(); FreeItemPool.PushFreeItem2Pool(_tempItems [j]); } }