public Res LoadRes(ResSearchKeys resSearchKeys) { var res = GetResFromCache(resSearchKeys); if (res != null) { if (res.State == ResState.Loaded) { return(res); } if (res.State == ResState.Loading) { // 正在做异步加载 res.StopLoadAsyncTask(); res.Load(); return(res); } if (res.State == ResState.NotLoad) { throw new Exception(string.Format("{0} 状态异常 {1}", resSearchKeys, res.State)); } } // 如果都未记录,则通过 ResFactory.Create 创建资源 res = ResFactory.Create(resSearchKeys); if (res == null) { return(null); } // 记录到资源共享池中 ResMgr.Instance.AddRes(res); // 添加到 ResLoader 以加载的列表 Add2LoadedReses(res); // 做加载操作 res.Load(); return(res); }
public void LoadResAsync(ResSearchKeys resSearchKeys, Action <bool, Res> onLoad) { var res = GetResFromCache(resSearchKeys); if (res != null) { if (res.State == ResState.Loaded) { onLoad(true, res); } else if (res.State == ResState.Loading) { // 有可能正在进行着异步加载,直接注册即可。 res.RegisterOnLoadEventOnce(onLoad); } else { Debug.LogErrorFormat("{0} 状态异常 {1}", resSearchKeys, res.State); onLoad(false, null); } return; } // 如果都未记录,则通过 ResFactory.Create 创建资源 res = ResFactory.Create(resSearchKeys); if (res == null) { onLoad(false, null); return; } // 记录到资源共享池中 ResMgr.Instance.AddRes(res); // 添加到 ResLoader 以加载的列表 Add2LoadedReses(res); // 注册加载的事件 res.RegisterOnLoadEventOnce(onLoad); // 做加载操作 res.LoadAsync(); }