Ejemplo n.º 1
0
        /// <summary>
        /// load ALL TestAPI
        /// 这个有一定局限性,这里是返回某个Ab中的所有资源
        /// 简单处理一些简单资源情况:目前只解决图集
        /// 仅作为某些项目补坑用
        /// </summary>
        /// <param name="path"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public T[] LoadAll <T>(string path) where T : Object
        {
            //非hash模式,需要debugRuntime
            // if (!this.AssetConfigLoder.IsHashName)
            // {
            //     path = ZString.Format(DEBUG_RUNTIME, path);
            // }


            var item = AssetConfigLoder.GetAssetBundleData <T>(path);
            //加载assetbundle
            AssetBundle ab = LoadAssetBundle(item.AssetBundlePath);

            if (ab != null)
            {
                var    assetNames = ab.GetAllAssetNames();
                string relname    = "";
                if (assetNames.Length == 1)
                {
                    relname = assetNames[0];
                }
                else
                {
                    var f = path + ".";
                    relname = assetNames.First((s) => s.Contains(f));
                }

                return(ab.LoadAssetWithSubAssets <T>(relname));
            }

            return(null);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 异步加载接口
        /// 外部创建 需要自己管理yield,防止逻辑冲突
        /// 开放该接口,主要用于各种批量测试控制逻辑,一般情况下无需调用
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="assetName"></param>
        /// <param name="callback"></param>
        /// <returns>异步任务id</returns>
        public AsyncLoadTaskGroupResult CreateAsyncLoadTask <T>(string assetName) where T : UnityEngine.Object
        {
            var assetBundleItem = AssetConfigLoder.GetAssetBundleData <T>(assetName);

            if (assetBundleItem != null)
            {
                //添加任务组
                var taskGroup = new AsyncLoadTaskGroupResult(this, assetBundleItem);
                taskGroup.Id = this.taskIdxCounter++;
                // AddAsyncTaskGroup(taskGroup);
                return(taskGroup);
            }
            else
            {
                BDebug.LogError("不存在资源:" + assetName);
            }

            return(null);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 异步加载接口
        /// 外部创建 需要自己管理yield,防止逻辑冲突
        /// 开放该接口,主要用于各种批量测试控制逻辑,一般情况下无需调用
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="assetLoadPath">api传入的加载路径,Runtime下的相对路径</param>
        /// <param name="callback"></param>
        /// <returns>异步任务id</returns>
        private LoadTaskGroup CreateAsyncLoadTask <T>(string assetLoadPath) where T : UnityEngine.Object
        {
            var assetBundleItem = AssetConfigLoder.GetAssetBundleData <T>(assetLoadPath);

            if (assetBundleItem != null)
            {
                //取消卸载任务
                this.CancelUnloadTask(assetBundleItem.AssetBundlePath);
                //创建任务组
                var taskGroup = new LoadTaskGroup(this, typeof(T), assetLoadPath, assetBundleItem);
                taskGroup.Id = this.taskIdxCounter++;
                // AddAsyncTaskGroup(taskGroup);
                return(taskGroup);
            }
            else
            {
                BDebug.LogError("不存在资源:" + assetLoadPath);
            }

            return(null);
        }