/// <summary> /// 克隆(浅克隆) /// </summary> /// <returns>一个新的LoadInfo实例</returns> public LoadInfo clone() { LoadInfo newInfo = new LoadInfo(); newInfo.fullName = fullName; newInfo.loadProgressNum = loadProgressNum; newInfo.unZipProgressNum = unZipProgressNum; newInfo.error = error; newInfo.assetBundle = assetBundle; newInfo.loadType = loadType; newInfo.priority = priority; newInfo.request = request; newInfo.assets = assets; newInfo.loadStart = loadStart; newInfo.loadProgress = loadProgress; newInfo.loadEnd = loadEnd; newInfo.loadFail = loadFail; newInfo.unZipStart = unZipStart; newInfo.unZipProgress = unZipProgress; newInfo.unZipEnd = unZipEnd; newInfo.unZipFail = unZipFail; return newInfo; }
//===================================================================== /// <summary> /// 加载资源,如果资源已经加载过,则直接从缓存中获取 /// </summary> /// <param name="fullName">全名</param> /// <param name="priority">优先级</param> /// <param name="loadType">加载类型</param> /// <param name="loadStart">加载开始前执行的方法</param> /// <param name="loadProgress">加载开始后且在结束前每帧执行的方法</param> /// <param name="loadEnd">加载结束后执行的方法</param> /// <param name="loadFail">加载失败后执行的方法</param> /// <param name="unZipStart">解压开始前执行的方法</param> /// <param name="unZipProgress">解压开始后且在结束前每帧执行的方法</param> /// <param name="unZipEnd">解压完毕后执行的方法</param> /// <param name="unZipFail">解压失败后执行的方法</param> public void addLoad(string fullName, LoadPriority priority = LoadPriority.two, LoadType loadType = LoadType.local, LoadFunctionDele loadStart = null, LoadFunctionDele loadProgress = null, LoadFunctionDele loadEnd = null, LoadFunctionDele loadFail = null, LoadFunctionDele unZipStart = null, LoadFunctionDele unZipProgress = null, LoadFunctionDele unZipEnd = null, LoadFunctionDele unZipFail = null) { LoadInfo loadInfo = new LoadInfo(); loadInfo.fullName = fullName; loadInfo.priority = priority; loadInfo.loadType = loadType; loadInfo.loadStart = loadStart; loadInfo.loadProgress = loadProgress; loadInfo.loadEnd = loadEnd; loadInfo.loadFail = loadFail; loadInfo.unZipStart = unZipStart; loadInfo.unZipProgress = unZipProgress; loadInfo.unZipEnd = unZipEnd; loadInfo.unZipFail = unZipFail; addLoad(loadInfo); }
/// <summary> /// 加载资源,如果资源已经加载过,则直接从缓存中获取 /// </summary> /// <param name="loadInfo">加载资源的相关信息</param> public void addLoad(LoadInfo loadInfo) { if (string.IsNullOrEmpty(loadInfo.fullName)) { throw new Exception("LoadManager.instance.load()的fullName不能为空"); } if (loadDic.ContainsKey(loadInfo.fullName)) { LoadInfo info = loadDic[loadInfo.fullName]; delegateAddition(info.loadStart, loadInfo.loadStart); delegateAddition(info.loadProgress, loadInfo.loadProgress); delegateAddition(info.loadEnd, loadInfo.loadEnd); delegateAddition(info.loadFail, loadInfo.loadFail); delegateAddition(info.unZipStart, loadInfo.unZipStart); delegateAddition(info.unZipProgress, loadInfo.unZipProgress); delegateAddition(info.unZipEnd, loadInfo.unZipEnd); delegateAddition(info.unZipFail, loadInfo.unZipFail); } else { if (unZipList.containsKey(loadInfo.fullName)) { LoadInfo info = unZipList.getValue(loadInfo.fullName); if (loadInfo.loadStart != null) { loadInfo.loadStart(LoadData.getLoadData(loadInfo.fullName)); } if (loadInfo.loadEnd != null) { loadInfo.loadEnd(LoadData.getLoadData(loadInfo.fullName, 1, null, info.assetBundle)); } if (loadInfo.unZipStart != null) { loadInfo.unZipStart(LoadData.getLoadData(loadInfo.fullName, 1)); } delegateAddition(info.unZipProgress, loadInfo.unZipProgress); delegateAddition(info.unZipEnd, loadInfo.unZipEnd); delegateAddition(info.unZipFail, loadInfo.unZipFail); return; } else { loadDic.Add(loadInfo.fullName, loadInfo); } } BundleLoadInfo newInfo = loadInfo.getBundleLoadInfo(); newInfo.loadEnd = loadInfo.loadEnd + this.loadEnd; BundleLoadManager.instance.addLoad(newInfo); }