internal static void EnumAsset <T>(IAssetLoadCallback cb, string title, string dir = "") where T : UnityEngine.Object { if (cb != null) { List <ObjectInfo> objInfoLst = cb.GetObjects(dir); for (int i = 0; i < objInfoLst.Count; ++i) { ObjectInfo oi = objInfoLst[i]; T asset = oi.obj as T; if (asset != null) { cb.PreProcess(oi.path); if (cb.Process(asset, oi.path)) { cb.PostProcess(oi.path); } } if (cb.verbose) { EditorUtility.DisplayProgressBar(string.Format("{0}-{1}/{2}", title, i, objInfoLst.Count), oi.path, (float)i / objInfoLst.Count); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); if (cb.verbose) { EditorUtility.ClearProgressBar(); EditorUtility.DisplayDialog("Finish", "All assets processed finish", "OK"); } cb.verbose = false; } }
private void AddLoad(int loadPriority, IAssetLoadCallback callback, int type, string filename, int life, string stateName, int count) { if (string.IsNullOrEmpty(filename) || count < 1) { JW.Common.Log.LogE("AssetService.AddLoad : invalid parameter"); return; } if (_loader == null) { return; } AssetData data = new AssetData(); data.Priority = loadPriority; data.Callback = callback; data.Type = type; data.Name = filename; //data.Filename = todo Lod data.Filename = filename; data.Factory = AssetClassFactory.GetFactory(type); data.Life = life; data.StateName = stateName; data.Count = count; _loader.AddTask(ref data); }
/// <summary> /// 取消异步加载 /// </summary> /// <param name="callback">回调接口</param> /// <param name="assetName">资源名或者类名(=null 标识取消所有跟回调接口相关的异步加载)</param> public void CancelAsyn(IAssetLoadCallback callback, string assetName = null) { if (_loader == null) { return; } _loader.CancelTask(callback, assetName); }
//异步加载 public void LoadAsyn(int type, int loadPriority, string filename, int life, IAssetLoadCallback callback, int cnt = 1) { string stateName = string.Empty; if (life == LifeType.Manual) { stateName = "Manual"; } else if (life == LifeType.UIState) { stateName = UIStateService.IsValidate() ? UIStateService.GetInstance().CurrentStateName : string.Empty; } // AddLoad(loadPriority, callback, type, filename, life, stateName, cnt); }
/// <summary> /// 取消任务 /// </summary> /// <param name="callback">回调</param> /// <param name="assetName">资源名或者类名</param> public void CancelTask(IAssetLoadCallback callback, string assetName) { if (callback == null) { JW.Common.Log.LogE("Loader.CancelTask : invalid parameter"); return; } if (_synLoading) { JW.Common.Log.LogE("Loader.CancelTask : load is running"); return; } for (int i = _resourceRequesting.Count - 1; i >= 0; --i) { LoadData loadData = _resourceRequesting[i]; if (loadData.Data.Callback != callback || (!string.IsNullOrEmpty(assetName) && !loadData.Data.Name.Equals(assetName, StringComparison.OrdinalIgnoreCase))) { continue; } if (loadData.Request != null) { if (_resourceDiscardRequest != null) { JW.Common.Log.LogE("Loader.ClearTask : _resourceDiscardRequest != null"); } _resourceDiscardRequest = loadData.Request; } _resourceRequesting.RemoveAt(i); } for (int i = _data.Count - 1; i >= 0; --i) { AssetData data = _data[i]; if (data.Callback == callback && (string.IsNullOrEmpty(assetName) || data.Name.Equals(assetName, StringComparison.OrdinalIgnoreCase))) { _data.RemoveAt(i); } } }