/// <summary> /// 添加加载完成回调 /// </summary> /// <param name=""></param> protected void AddCallback(OnLoadResDone callback) { if (null != callback) { if (IsDone) { //如果加载已完成 则直接调用 callback(IsSuccess, RetResult); } else { //添加调用列表中 m_callbackList.Add(callback); } } }
/// <summary> /// 工厂方法 /// </summary> protected static T CreateNewLoader <T>(string path, OnLoadResDone callback, params object[] args) where T : ResLoader, new() { Dictionary <string, ResLoader> resLoaders = GetLoaderDictWithType(typeof(T)); ResLoader loader = null; if (string.IsNullOrEmpty(path)) { LoggerHelper.Error(string.Format("{0}: CreateNewLoader path is null", typeof(T))); } if (!resLoaders.TryGetValue(path, out loader)) { //资源加载器不包含该资源 loader = new T(); resLoaders[path] = loader; loader.Init(path, args); //此处编辑器可以生成对应的Loader GameObject } else { if (0 < loader.RefCount) { LoggerHelper.Error(string.Format("loader.RefCount: {0}", loader.RefCount)); loader.RefCount = 0; loader.IsDirty = false; } } loader.RefCount++; if (m_recycleList.Contains(loader)) { m_recycleList.Remove(loader); } loader.AddCallback(callback); return(loader as T); }