示例#1
0
        /// <summary>
        /// 添加一个依赖,这个仅在Editor下调用
        /// </summary>
        /// <param name="name"></param>
        /// <param name="dependencies"></param>
        public void AddItem(string name, string hash, List <string> dependencies, ManifestItem.AssetTypeEnum @enum,
                            string packageName = "")
        {
            ManifestItem item = null;

            if (this.Manifest_NameKey.TryGetValue(name, out item))
            {
                if (item.Hash != hash)
                {
                    Debug.LogError("有重名:" + name + ",如无显式BResource.Load加载则无视,隐式会自动根据hash算依赖!");
                    name = name + "_r";
                    item = new ManifestItem(name, hash, packageName, @enum, dependencies);
                    this.Manifest_NameKey[name] = item;
                    this.Manifest_HashKey[hash] = item;
                }
                else if (dependencies.Count >= item.Depend.Count)
                {
                    item = new ManifestItem(name, hash, packageName, @enum, dependencies);
                    this.Manifest_NameKey[name] = item;
                    this.Manifest_HashKey[hash] = item;
                }
            }
            else
            {
                item = new ManifestItem(name, hash, packageName, @enum, dependencies);
                this.Manifest_NameKey[name] = item;
                this.Manifest_HashKey[hash] = item;
            }
        }
        /// <summary>
        /// 获取单个menifestItem
        /// </summary>
        /// <param name="manifestName"></param>
        /// <returns></returns>
        public ManifestItem GetManifestItem(string manifestName)
        {
            ManifestItem item = new ManifestItem();

            this.Manifest.TryGetValue(manifestName, out item);
            return(item);
        }
示例#3
0
        /// <summary>
        /// 获取单个menifestItem
        /// </summary>
        /// <param name="manifestName"></param>
        /// <returns></returns>
        public ManifestItem GetManifestItem(string manifestName)
        {
            if (!string.IsNullOrEmpty(manifestName))
            {
                ManifestItem item = new ManifestItem();
                this.Manifest.TryGetValue(manifestName, out item);
                return(item);
            }

            return(null);
        }
示例#4
0
        /// <summary>
        /// 获取单个menifestItem
        /// </summary>
        /// <param name="manifestName"></param>
        /// <returns></returns>
        public ManifestItem GetManifestItemByHash(string hashName)
        {
            if (!string.IsNullOrEmpty(hashName))
            {
                ManifestItem item = null;
                this.Manifest_HashKey.TryGetValue(hashName, out item);
                return(item);
            }

            return(null);
        }
示例#5
0
        /// <summary>
        /// 获取单个menifestItem
        /// </summary>
        /// <param name="manifestName"></param>
        /// <returns></returns>
        public ManifestItem GetManifestItemByName(string manifestName)
        {
            if (!string.IsNullOrEmpty(manifestName))
            {
                ManifestItem item = null;
                this.Manifest_NameKey.TryGetValue(manifestName, out item);
                return(item);
            }

            return(null);
        }
        /// <summary>
        /// 添加一个依赖
        /// </summary>
        /// <param name="name"></param>
        /// <param name="dependencies"></param>
        public void AddDepend(string name, string UIID, List <string> dependencies)
        {
            var item = new ManifestItem()
            {
                Name         = name,
                UIID         = UIID,
                Dependencies = dependencies
            };

            this.Manifest[name] = item;
        }
        /// <summary>
        /// 获取单个依赖
        /// </summary>
        /// <param name="menifestName"></param>
        /// <returns></returns>
        public string[] GetDirectDependencies(string manifestName)
        {
            ManifestItem item = null;

            if (this.manifestMap.TryGetValue(manifestName, out item))
            {
                return(item.Dependencies.ToArray());
            }

            return(new string[0]);
        }
        /// <summary>
        /// 加载资源
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="abName"></param>
        /// <param name="objName"></param>
        /// <returns></returns>
        private T LoadFormAssetBundleByName <T>(string assetName) where T : UnityEngine.Object
        {
            ManifestItem item = this.config.Manifest.GetManifestItemByName(assetName);

            if (item != null)
            {
                return(LoadFormAssetBundle(item, typeof(T)) as T);
            }

            Debug.LogError("不存在:" + assetName);
            return(null);
        }
        /// <summary>
        /// 获取单个依赖
        /// </summary>
        /// <param name="menifestName"></param>
        /// <returns></returns>
        public string[] GetDirectDependenciesByName(string name)
        {
            ManifestItem item = null;

            if (this.Manifest_NameKey.TryGetValue(name, out item))
            {
                var list = new List <string>(item.Depend);
                list.Add(item.Hash);
                return(list.ToArray());
            }
            BDebug.LogError("【config】不存在资源:" + name);
            return(null);
        }
示例#10
0
        public LoaderTaskGroup(AssetBundleMgrV2 loder,
                               string mainAssetName,
                               ManifestItem manifestItem,
                               List <LoaderTaskData> taskList,
                               OnTaskCompleteCallbackDelegate onAllTaskCompleteCallbackDelegate)
        {
            this.loder    = loder;
            this.taskList = taskList;
            //主资源
            this.MainAssetName = mainAssetName;
            this.manifestItem  = manifestItem;

            this.totalTaskNum = taskList.Count;
            this.OnAllTaskCompleteCallback += onAllTaskCompleteCallbackDelegate;
        }
        /// <summary>
        /// 获取单个依赖
        /// </summary>
        /// <param name="menifestName"></param>
        /// <returns></returns>
        public string[] GetDirectDependencies(string manifestName)
        {
            ManifestItem item = null;

            if (this.Manifest.TryGetValue(manifestName, out item))
            {
                if (item == null)
                {
                    BDebug.LogError("资源为null:" + manifestName);
                }

                return(item.Dependencies.ToArray());
            }

            return(new string[0]);
        }
示例#12
0
 public void AddItem(ManifestItem item)
 {
     if (this.Manifest_NameKey.ContainsKey(item.Name))
     {
         //prefab 嵌套的情况, 2018新系统
         //被依赖项 其实也有依赖,
         if (item.Depend.Count >= this.Manifest_NameKey[item.Name].Depend.Count)
         {
             this.Manifest_NameKey[item.Name] = item;
             this.Manifest_HashKey[item.Hash] = item;
         }
     }
     else
     {
         this.Manifest_NameKey[item.Name] = item;
         this.Manifest_HashKey[item.Hash] = item;
     }
 }
示例#13
0
        /// <summary>
        /// 获取单个依赖
        /// </summary>
        /// <param name="menifestName"></param>
        /// <returns></returns>
        public List <string> GetDirectDependencies(string manifestName)
        {
            ManifestItem item = null;

            if (this.Manifest.TryGetValue(manifestName, out item))
            {
                if (item == null)
                {
                    BDebug.LogError("资源为null:" + manifestName);
                }

                var list = new List <string>(item.Dependencies);
                list.Remove(manifestName);
                list.Add(manifestName);
                return(list);
            }

            return(new List <string>());
        }
示例#14
0
        /// <summary>
        /// 加载资源
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="abName"></param>
        /// <param name="objName"></param>
        /// <returns></returns>
        private Object LoadFormAssetBundle(ManifestItem item, Type t)
        {
            //判断资源结构 是单ab-单资源、单ab-多资源
            //单ab 单资源
            var sourceName = item.Name;

            //单ab 多资源
            if (!string.IsNullOrEmpty(item.Package))
            {
                item = this.config.Manifest.GetManifestItemByHash(item.Package);
            }

            Object            o   = null;
            AssetBundleWapper abr = null;

            if (assetbundleMap.TryGetValue(item.Hash, out abr))
            {
                switch ((ManifestItem.AssetTypeEnum)item.Type)
                {
                //暂时需要特殊处理的只有一个
                case ManifestItem.AssetTypeEnum.SpriteAtlas:
                {
                    o = abr.LoadTextureFormAtlas(sourceName);
                }
                break;

                default:
                {
                    o = abr.LoadAsset(sourceName, t);
                }
                break;
                }
            }
            else
            {
                BDebug.Log("资源不存在:" + sourceName, "red");

                return(null);
            }

            return(o);
        }
        /// <summary>
        /// 添加一个依赖
        /// </summary>
        /// <param name="name"></param>
        /// <param name="dependencies"></param>
        public void AddDepend(string name, string UIID, List <string> dependencies)
        {
            var item = new ManifestItem()
            {
                Name         = name,
                UIID         = UIID,
                Dependencies = dependencies
            };

            if (this.Manifest.ContainsKey(name))
            {
                //prefab 嵌套的情况, 2018新系统
                //被依赖项 其实也有依赖,
                if (dependencies.Count >= this.Manifest[name].Dependencies.Count)
                {
                    this.Manifest[name] = item;
                }
            }
            else
            {
                this.Manifest[name] = item;
            }
        }