Exemple #1
0
        public object getAsset(string key)
        {
            AssetsInfor ai = (AssetsInfor)(assetsMap [key]);

            if (ai != null)
            {
                return(ai.asset);
            }
            return(null);
        }
Exemple #2
0
        public void addAsset(string key, string name, AssetBundle asset, Callback onRealse)
        {
            AssetsInfor ai = new AssetsInfor();

            ai.name         = name;
            ai.lastUsedTime = System.DateTime.Now.ToFileTime();
            ai.usedCount    = 0;
            ai.asset        = asset;
            ai.doRealse     = onRealse;
            ai.key          = key;
            assetsMap [key] = ai;
        }
Exemple #3
0
        public void releaseAsset(bool isForceRelease)
        {
            try {
                if (isPuase && !isForceRelease)
                {
                    return;
                }
                AssetsInfor ai   = null;
                ArrayList   list = new ArrayList();
                list.AddRange(assetsMap.Values);
                bool isHadRealseAssets = false;
                for (int i = 0; i < list.Count; i++)
                {
                    ai = (AssetsInfor)(list [i]);
                    if (ai == null)
                    {
                        continue;
                    }
                    if (ai.usedCount <= 0 &&
                        ((System.DateTime.Now.ToFileTime() - ai.lastUsedTime) / 10000000 > realseTime || isForceRelease))
                    {
                        if (ai.doRealse != null)
                        {
                            ai.doRealse(ai.name);
                        }
                        assetsMap.Remove(ai.key);
                        if (ai.asset != null)
                        {
                            ai.asset.Unload(true);
                            ai.asset = null;
                        }
                        ai = null;
                        isHadRealseAssets = true;
                    }
                }
//            UnityEngine.Resources.UnloadUnusedAssets();
                list.Clear();
                list = null;

                if (isHadRealseAssets)
                {
                    //这种情况是处理当图片已经destory了,材质球却未来得及destory的情况
                    releaseAsset(isForceRelease);
                }
            } catch (System.Exception e) {
                Debug.LogError(e);
            }
        }
Exemple #4
0
        public void useAsset(string key)
        {
            AssetsInfor ai = (AssetsInfor)(assetsMap [key]);

            if (ai != null)
            {
                ai.usedCount++;
                ai.lastUsedTime = System.DateTime.Now.ToFileTime();
                assetsMap [key] = ai;

                                #if UNITY_EDITOR
                if (!string.IsNullOrEmpty(debugKey) && key.Contains(debugKey))
                {
                    Debug.LogWarning(ai.usedCount + "====useAsset===" + key);
                }
                                #endif
            }
        }
Exemple #5
0
        public void unUseAsset(string key)
        {
            AssetsInfor ai = (AssetsInfor)(assetsMap [key]);

            if (ai != null)
            {
                ai.usedCount--;
                if (ai.usedCount < 0)
                {
                    Debug.LogError("[" + ai.key + "] is use time less then zero!!");
                    ai.usedCount = 0;
                }
                ai.lastUsedTime = System.DateTime.Now.ToFileTime();
                assetsMap [key] = ai;

                                #if UNITY_EDITOR
                if (!string.IsNullOrEmpty(debugKey) && key.Contains(debugKey))
                {
                    Debug.LogWarning(ai.usedCount + "===unUseAsset====" + key);
                }
                                #endif
            }
        }