Beispiel #1
0
    //回收部件到缓存
    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);
            }
        }
    }
Beispiel #2
0
    //获取缓存的指定资源
    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);
    }