Ejemplo n.º 1
0
        private AssetBundle LoadAssetBundle(string ABName)
        {
            AssetBundleItem item = null;
            uint            crc  = Crc32.GetCrc32(ABName);

            if (mAssetBundleItemDic.TryGetValue(crc, out item) && item != null)
            {
                item.Retain();
            }
            else
            {
                AssetBundle assetBundle = null;
                string      fullPath    = ABDataHolder.Instance.GetABPrefix() + ABName;
                if (ABDataHolder.Instance.JudgeCanLoadAB(fullPath))
                {
                    assetBundle = AssetBundle.LoadFromFile(fullPath);
                }
                else
                {
                    AFLogger.e("不存在AB包路径 :" + ABName + " " + fullPath);
                }

                if (assetBundle == null)
                {
                    AFLogger.e(" Load AssetBundle Error:" + ABName + " " + fullPath);
                }

                item = SafeObjectPool <AssetBundleItem> .Instance.Allocate();

                item.assetBundle = assetBundle;
                item.Retain();
                mAssetBundleItemDic.Add(crc, item);
            }
            return(item.assetBundle);
        }
Ejemplo n.º 2
0
 public void CacheAssetbundle(uint crc, AssetBundleItem assetBundleItem)
 {
     if (mAssetBundleItemDic.ContainsKey(crc))
     {
         mAssetBundleItemDic[crc].Retain();
     }
     else
     {
         mAssetBundleItemDic.Add(crc, assetBundleItem);
     }
 }
Ejemplo n.º 3
0
        private void UnLoadAssetBundle(string ABName)
        {
            AssetBundleItem item = null;
            uint            crc  = Crc32.GetCrc32(ABName);

            if (mAssetBundleItemDic.TryGetValue(crc, out item) && item != null)
            {
                item.Release();
                if (item.RefCount <= 0 && item.assetBundle != null)
                {
                    item.assetBundle.Unload(true);
                    item.Recycle2Cache();
                    SafeObjectPool <AssetBundleItem> .Instance.Recycle(item);

                    mAssetBundleItemDic.Remove(crc);
                }
            }
        }