Exemple #1
0
        //根据单个AbName 加载AB
        private AssetBundle LoadAssetBundle(string assetBundleName)
        {
            MAssetBundleItem assetBundleItem = null;
            uint             crc             = MCrcHelper.GetCRC32(assetBundleName);

            if (!m_assetBundleItemDic.TryGetValue(crc, out assetBundleItem))
            {
                AssetBundle assetBundle = null;
                string      fullPath    = MPathUtils.ASSETBUNDLE_PATH + "/" + assetBundleName;

                if (File.Exists(fullPath))
                {
                    assetBundle = AssetBundle.LoadFromFile(fullPath);
                }

                if (assetBundle == null)
                {
                    MDebug.singleton.AddErrorLog("没有找到这个AssetBundle " + assetBundleName);
                }
                assetBundleItem             = m_assetBundleItemPool.Spawn(true);
                assetBundleItem.assetBundle = assetBundle;
                assetBundleItem.refCount++;
                m_assetBundleItemDic.Add(crc, assetBundleItem);
            }
            else
            {
                assetBundleItem.refCount++;
            }

            return(assetBundleItem.assetBundle);
        }
Exemple #2
0
        //释放单个Ab资源
        private void UnLoadAssetBundle(string assetBundleName)
        {
            MAssetBundleItem mAssetBundleItem = null;
            uint             crc = MCrcHelper.GetCRC32(assetBundleName);

            if (m_assetBundleItemDic.TryGetValue(crc, out mAssetBundleItem))
            {
                mAssetBundleItem.refCount--;
                if (mAssetBundleItem.refCount <= 0 && mAssetBundleItem.assetBundle != null)
                {
                    mAssetBundleItem.assetBundle.Unload(true);
                    mAssetBundleItem.Reset();
                    m_assetBundleItemPool.Recycle(mAssetBundleItem);
                    m_assetBundleItemDic.Remove(crc);
                }
            }
        }