//回收部件到缓存 public void CachePart(Avatar.PartData partData) { if (partData != null) { List <Avatar.PartData> partList; if (!mCachePartDict.TryGetValue(partData.mName, out partList)) { if (mCachePartDict.Count >= MAX_PART_LIST_CACHE) { foreach (var item in mCachePartDict) { for (int i = 0; i < item.Value.Count; i++) { if (item.Value[i].mObj != null) { GameObject.Destroy(item.Value[i].mObj); } } mCachePartDict.Remove(item.Key); break; } } partList = new List <Avatar.PartData>(); mCachePartDict.Add(partData.mName, partList); } if (partData.mObj != null && mRootObj != null) { partData.mObj.SetActive(false); partData.mObj.transform.SetParent(mRootObj.transform, false); partList.Add(partData); } } }
//获取缓存的指定资源 public Avatar.PartData GetPart(string resName) { List <Avatar.PartData> partList; if (mCachePartDict.TryGetValue(resName, out partList)) { if (partList.Count > 0) { Avatar.PartData partData = partList[0]; partList.RemoveAt(0); if (partData != null && partData.mObj != null) { return(partData); } else { return(null); } } } return(null); }