Example #1
0
    void DestroyResItem(ResItemInfo item, bool completeClear = false)
    {
        if (item.RefCount > 0)
        {
            return;
        }
        if (!resCacheDic.Remove(item.CRC))
        {
            return;
        }
        if (!objCacheDic.Remove(item.InsID))
        {
            return;
        }

        if (!completeClear)
        {
            noRefResCache.Cache(item.CRC, item);
            return;
        }
        noRefResCache.Remove(item.CRC);
        item.obj = null;
        loader.ReleaseAsset(item.AssetPath, item.CRC);
#if UNITY_EDITOR
        Resources.UnloadUnusedAssets();
#endif
    }
Example #2
0
    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 80, 50), "Change1"))
        {
            PrintArr(mTestDragList);
            for (int i = 0; i < 10; ++i)
            {
                mTmpList.Add(mTestDragList[i]);
                if (mTmpList[i] is ResItemInfo)
                {
                    (mTmpList[i] as ResItemInfo).iCount = i + 11000;
                }
                else
                {
                    (mTmpList[i] as EqptItemInfo).Exp = i + 22000;
                }
            }
            Debug.LogWarning("=========================");
            PrintArr(mTmpList);
            Debug.LogWarning("=========================");
            PrintArr(mTestDragList);
        }


        if (GUI.Button(new Rect(100, 10, 80, 50), "Change2"))
        {
            PrintArr(mTestDragList);
            for (int i = 0; i < 10; ++i)
            {
                if (mTestDragList[i] is ResItemInfo)
                {
                    ResItemInfo resItem = new ResItemInfo();
                    resItem = mTestDragList[i] as ResItemInfo;
                    mTmpList.Add(resItem);
                }
                else
                {
                    EqptItemInfo eqptItem = new EqptItemInfo();
                    eqptItem = mTestDragList[i] as EqptItemInfo;
                    mTmpList.Add(eqptItem);
                }
                if (mTmpList[i] is ResItemInfo)
                {
                    (mTmpList[i] as ResItemInfo).iCount = i + 11000;
                }
                else
                {
                    (mTmpList[i] as EqptItemInfo).Exp = i + 22000;
                }
            }
            Debug.LogWarning("=========================");
            PrintArr(mTmpList);
            Debug.LogWarning("=========================");
            PrintArr(mTestDragList);
        }
    }
Example #3
0
    void CacheNoRefRes(string path, uint crc, Object obj)
    {
        var item = new ResItemInfo();

        item.AssetPath = path;
        item.CRC       = crc;
        item.obj       = obj;
        item.RefCount  = 0;
        item.InsID     = obj.GetInstanceID();
        noRefResCache.Cache(item.CRC, item);
    }
Example #4
0
    void CacheRes(string path, uint crc, Object obj, int addRefCount)
    {
        WashOut();
        var item = new ResItemInfo();

        item.AssetPath = path;
        item.CRC       = crc;
        item.obj       = obj;
        item.RefCount  = addRefCount;
        item.InsID     = obj.GetInstanceID();
        resCacheDic.Add(crc, item);
        objCacheDic.Add(item.InsID, item);
    }
Example #5
0
    public bool ReleaseRes(uint crc, bool completeClear)
    {
        ResItemInfo item = null;

        if (!resCacheDic.TryGetValue(crc, out item))
        {
            Debug.LogWarningFormat("released not exist res {0}", crc.ToString());
            return(false);
        }

        item.RefCount--;
        DestroyResItem(item, completeClear);
        return(true);
    }
Example #6
0
    public bool ReleaseRes(Object obj, bool completeClear)
    {
        var         insID = obj.GetInstanceID();
        ResItemInfo item  = null;

        if (!objCacheDic.TryGetValue(insID, out item))
        {
            Debug.LogWarningFormat("released not exist res {0}", obj.name);
            return(false);
        }

        item.RefCount--;
        DestroyResItem(item, completeClear);
        return(true);
    }
Example #7
0
    // Use this for initialization
    void Start()
    {
        for (int i = 0; i < 10; ++i)
        {
            ResItemInfo resItem = new ResItemInfo();
            resItem.iCount   = i + 10000;
            resItem.mStrName = "Res_" + i.ToString();
            mTestDragList.Add(resItem);

            EqptItemInfo eqptItem = new EqptItemInfo();
            eqptItem.Exp      = i + 20000;
            eqptItem.mStrName = "Eqpt_" + i.ToString();
            mTestDragList.Add(eqptItem);
        }
    }
Example #8
0
    void OnGUI()
    {
        if (GUI.Button(new Rect(0, 50, 100, 50), "Add"))
        {
            ArrayList ArrList = new ArrayList();
            int       idx     = 0;
            for (int i = 0; i < 10; ++i)
            {
                ResItemInfo resItem = new ResItemInfo();
                resItem.iCount   = i + 10000;
                resItem.mIndex   = ++idx;
                resItem.mStrName = "Res_" + idx.ToString();
                ArrList.Add(resItem);

                EqptItemInfo eqptItem = new EqptItemInfo();
                eqptItem.Exp      = i + 20000;
                eqptItem.mIndex   = ++idx;
                eqptItem.mStrName = "Eqpt_" + idx.ToString();
                ArrList.Add(eqptItem);
            }
            Debug.LogWarning("========Len = " + ArrList.Count);
            BindDataSource(ArrList, 1);
        }
        if (GUI.Button(new Rect(0, 100, 100, 50), "Del"))
        {
        }
        if (GUI.Button(new Rect(0, 150, 100, 50), "Del&Add"))
        {
        }
        return;

        if (GUI.Button(new Rect(0, 50, 100, 50), "Add"))
        {
            AddItems();
        }
        if (GUI.Button(new Rect(0, 100, 100, 50), "Del"))
        {
            DelItems();
        }
        if (GUI.Button(new Rect(0, 150, 100, 50), "Del&Add"))
        {
            DelItems();
            AddItems();
        }
    }
Example #9
0
    ResItemInfo GetCacheResItem(uint crc, int addRefCount = 1)
    {
        ResItemInfo item = null;

        if (resCacheDic.TryGetValue(crc, out item))
        {
            item.RefCount += addRefCount;
        }
        else
        {
            //LRU缓存中查找
            item = noRefResCache.Get(crc);
            if (item != null)
            {
                item.RefCount += addRefCount;
                resCacheDic.Add(crc, item);
                objCacheDic.Add(item.InsID, item);
            }
        }
        return(item);
    }