Beispiel #1
0
        public AssetBundle GetAssetBundle(string name)
        {
            AssetBundleRef abRef = null;

            if (mRefDict.TryGetValue(name, out abRef))
            {
                return(abRef.mAB);
            }

            return(null);
        }
Beispiel #2
0
        public void UnloadAssetBundle(string name)
        {
            AssetBundleRef abRef = null;

            if (mRefDict.TryGetValue(name, out abRef))
            {
                abRef.DecRef();

                if (!abRef.HasRef())
                {
                    abRef.StopAndUnload();
                    mRefDict.Remove(name);
                }
            }
        }
Beispiel #3
0
        public IEnumerator LoadAssetBundle(string name)
        {
            AssetBundleRef abRef = null;

            if (mRefDict.TryGetValue(name, out abRef))
            {
                abRef.IncRef();
                while (abRef.mReq != null && abRef.mAB == null)
                {
                    yield return(null);
                }
                yield break;
            }

            abRef = new AssetBundleRef();
            if (abRef == null)
            {
                yield break;
            }
            abRef.IncRef();
            mRefDict.Add(name, abRef);

            abRef.mReq = AssetBundle.LoadFromFileAsync(VersionManager.Instance.GetFilePath("AssetBundles", name));
            yield return(abRef.mReq);

            // 创建失败或者被强行中断
            if (abRef.mReq == null)
            {
                yield break;
            }
            // 加载失败
            if (abRef.mReq.assetBundle == null)
            {
                LogManager.Debug(string.Format("{0}::{1} => can't load {2}", "AssetBundleManager", "LoadAssetBundle", name));
                yield break;
            }

            abRef.mAB  = abRef.mReq.assetBundle;
            abRef.mReq = null;
        }