/// <summary>
        /// 异步加载资源
        /// </summary>
        /// <typeparam name="T">资源类型</typeparam>
        /// <param name="assetName">资源名称(完整名称,加路径及后缀名)</param>
        /// <param name="callback">回调函数</param>
        /// <returns>加载进度</returns>
        public IProgress LoadAsync <T>(string assetName, Action <T> callback) where T : UnityEngine.Object
        {
            var temp = Utility.Text.SplitPathName(assetName);

            DynamicMultiProgress progress = new DynamicMultiProgress(2, 0.9f, 0.1f);

            var abProgress = LoadAssetBundleAsync(temp[0], (ab) =>
            {
                var request     = ab.LoadAssetAsync(temp[1]);
                SingleTask task = new SingleTask(() =>
                {
                    return(request.isDone);
                });
                task.Then(() => { callback(request.asset as T); return(true); });
                task.Start();

                SingleResProgress resProgress = new SingleResProgress(request);
                progress.Add(resProgress);
            });

            progress.Add(abProgress);

            return(progress);
        }
        public IProgress LoadAsync <T>(string assetName, System.Action <T> callback) where T : Object
        {
            var temp = Utility.Text.SplitPathName(assetName);

            DynamicMultiProgress progress = new DynamicMultiProgress(2);

            var abProgress = GetAssetBundleAsync(temp[0], (ab) =>
            {
                var request     = ab.LoadAssetAsync(temp[1]);
                SingleTask task = new SingleTask(() =>
                {
                    return(request.isDone);
                });
                task.Then(() => { callback(request.asset as T); return(true); });
                GameEntry.GetModule <TaskManager>().StartTask(task);

                SingleResProgress resProgress = new SingleResProgress(request);
                progress.Add(resProgress);
            });

            progress.Add(abProgress);

            return(progress);
        }