Exemplo n.º 1
0
    /// <summary>
    /// 载入AssetBundle资源
    /// </summary>
    public AssetBundle LoadAssetBundle(string bundle)
    {
        AssetBundle ab;

        // 尝试获取已加载过的AssetBundle
        if (AssetBundleMap.TryGetValue(bundle, out ab) && ab != null)
        {
            return(ab);
        }

        try
        {
            // 载入assetBundle
            ab = AssetBundle.LoadFromFile(ConfigMgr.ASSETBUNDLES_PATH + "/" + bundle);

            // 添加到资源管理列表中
            AssetBundleMap[bundle] = ab;
        }
        catch (Exception e)
        {
            // 给出异常提示信息
            NIDebug.LogException(e);
        }

        // 返回资源
        return(ab);
    }
Exemplo n.º 2
0
        public GameObject LoadAsset(string assetBundleName, string assetName)
        {
            if (!assetBundleMaps.ContainsKey(assetBundleName))
            {
                return(null);
            }
            AssetBundleMap map = assetBundleMaps[assetBundleName];

            return(map.assetBundle.LoadAsset <GameObject>(assetName));
        }
Exemplo n.º 3
0
        public object LoadAssetByType(string assetBundleName, string assetName, Type t)
        {
            if (!assetBundleMaps.ContainsKey(assetBundleName))
            {
                return(null);
            }
            AssetBundleMap map = assetBundleMaps[assetBundleName];

            return(map.assetBundle.LoadAsset(assetName, t));
        }
Exemplo n.º 4
0
        private IEnumerator LoadAsset(string assetBundleName, string assetName, Action <GameObject> callback)
        {
            if (!assetBundleMaps.ContainsKey(assetBundleName))
            {
                yield break;
            }
            AssetBundleMap     map = assetBundleMaps[assetBundleName];
            AssetBundleRequest abq = map.assetBundle.LoadAssetAsync <GameObject>(assetName);

            yield return(abq);

            callback(abq.asset as GameObject);
            UnLoadAssetBundle(assetBundleName);
        }
Exemplo n.º 5
0
        public void UnLoadAssetBundle(string assetBundleName)
        {
            if (!assetBundleMaps.ContainsKey(assetBundleName))
            {
                return;
            }
            AssetBundleMap map = assetBundleMaps[assetBundleName];

            if (map.Unload())
            {
                assetBundleMaps.Remove(assetBundleName);
            }
            // 尝试卸载依赖
            foreach (string a in map.dependencies)
            {
                UnLoadAssetBundle(a);
            }
        }
Exemplo n.º 6
0
        public void LoadAssetBundle(string assetBundleName)
        {
            if (assetBundleMaps.ContainsKey(assetBundleName))
            {
                AssetBundleMap map = assetBundleMaps[assetBundleName];
                map.count++;
                foreach (string s in map.dependencies)
                {
                    if (assetBundleMaps.ContainsKey(s))
                    {
                        AssetBundleMap map0 = assetBundleMaps[s];
                        map0.count++;
                    }
                }
                return;
            }
            string[] dependencies = manifest.GetAllDependencies(assetBundleName);
            for (int i = 0; i < dependencies.Length; i++)
            {
                if (assetBundleMaps.ContainsKey(dependencies[i]))
                {
                    AssetBundleMap map = assetBundleMaps[dependencies[i]];
                    map.count++;
                    continue;
                }
                assetBundleMaps.Add(dependencies[i], new AssetBundleMap {
                    assetBundleName = dependencies[i],
                    assetBundle     = AssetBundle.LoadFromFile(pathPrefix + dependencies[i]),
                    dependencies    = manifest.GetAllDependencies(dependencies[i]),
                    count           = 1
                });
            }
            AssetBundle assetBundle = AssetBundle.LoadFromFile(pathPrefix + assetBundleName);

            assetBundleMaps.Add(assetBundleName, new AssetBundleMap {
                assetBundleName = assetBundleName,
                assetBundle     = assetBundle,
                dependencies    = dependencies,
                count           = 1
            });
        }
Exemplo n.º 7
0
        private IEnumerator LoadAssetBundle(string assetBundleName, Action callback)
        {
            if (assetBundleMaps.ContainsKey(assetBundleName))
            {
                AssetBundleMap map = assetBundleMaps[assetBundleName];
                map.count++;
                foreach (string s in map.dependencies)
                {
                    if (assetBundleMaps.ContainsKey(s))
                    {
                        AssetBundleMap map0 = assetBundleMaps[s];
                        map0.count++;
                    }
                }
                callback();
                yield break;
            }
            string[] dependencies = manifest.GetAllDependencies(assetBundleName);
            if (isShowProgress && controller != null)
            {
                // 如果要显示进度 , 则对进度条进行初始化
                controller.InitSlider(dependencies.Length + 1);
                controller.UpdateInfo("加载依赖资源......");
            }
            for (int i = 0; i < dependencies.Length; i++)
            {
                if (assetBundleMaps.ContainsKey(dependencies[i]))
                {
                    AssetBundleMap map = assetBundleMaps[dependencies[i]];
                    map.count++;
                }
                else
                {
                    AssetBundleCreateRequest abcr0 = AssetBundle.LoadFromFileAsync(pathPrefix + dependencies[i]);
                    yield return(abcr0);

                    assetBundleMaps.Add(dependencies[i], new AssetBundleMap {
                        assetBundleName = dependencies[i],
                        assetBundle     = abcr0.assetBundle,
                        dependencies    = manifest.GetAllDependencies(dependencies[i]),
                        count           = 1
                    });
                }
                if (isShowProgress && controller != null)
                {
                    // 更新加载进度
                    controller.UpdateProgress(1);
                }
            }
            if (isShowProgress && controller != null)
            {
                controller.UpdateInfo("依赖资源加载完成");
            }
            AssetBundleCreateRequest abcr = AssetBundle.LoadFromFileAsync(pathPrefix + assetBundleName);

            yield return(abcr);

            assetBundleMaps.Add(assetBundleName, new AssetBundleMap {
                assetBundleName = assetBundleName,
                assetBundle     = abcr.assetBundle,
                dependencies    = dependencies,
                count           = 1
            });
            if (isShowProgress && controller != null)
            {
                // 更新加载进度
                controller.UpdateProgress(1);
                controller.UpdateInfo("场景实例化中......");
            }
            callback();
        }