/// <summary> /// 把每一帧加载到的资源保存到资源列表中 /// 进入此方法的都是同名资源,不同名的资源请求要等到下一帧处理 /// </summary> /// <param name="resInfo">资源包</param> /// <param name="loaded">已经加载完成的loader</param> /// <param name="loadingList"></param> private void ProcessLoaded(AssetLoader loaded) { Asset t_asset = m_dictResource[loaded.SrcPath]; if (t_asset.OriginalObj == null) { t_asset.OriginalObj = loaded.OraginalObj; } LoaderInfo t_loaderInfo = loaded.Shift(); ResCallBackReady(loaded.SrcPath, loaded.SrcName, loaded.OraginalObj, loaded.IsInstanate, t_loaderInfo.completeCallback, t_loaderInfo.customData); if (loaded.Count == 0) { m_dictLoader.Remove(loaded.SrcPath); PoolTo(loaded); } //非引用计数类型如果不缓存,则直接销毁 if (t_asset.CanRelease) { t_asset.Release(true); m_dictResource.Remove(loaded.SrcPath); } }
/// <summary> /// 从前边冒出 /// </summary> /// <returns></returns> public LoaderInfo Shift() { LoaderInfo t_loaderInfo = m_loaderInfoList[0]; m_loaderInfoList.RemoveAt(0); m_loaderInfoDic.Remove(t_loaderInfo.scriptObj); return(t_loaderInfo); }
/// <summary> /// 创建加载信息 /// </summary> /// <param name="scriptObj">请求的脚本</param> /// <param name="srcPath">资源路径</param> /// <param name="srcName">资源名</param> /// <param name="type">ResourceType</param> /// <param name="isInstance">是否实例化</param> /// <param name="isCache">是否缓存资源,可实例化的资源在引用计数为0时也不销毁,不可实例化资源跟引用计数无关</param> /// <param name="progress">进度回调</param> /// <param name="complete">结束回调</param> /// <param name="args">自定义参数</param> public static LoaderInfo CreateLoaderInfo(System.Object scriptObj, LoadingProgressCallback progress, LoadCompleteCallback complete, params string[] args) { LoaderInfo t_loaderInfo = new LoaderInfo(); t_loaderInfo.scriptObj = scriptObj; t_loaderInfo.progressCallback = progress; t_loaderInfo.completeCallback = complete; t_loaderInfo.customData = args; return(t_loaderInfo); }
/// <summary> /// 加入任务 /// </summary> /// <param name="loader"></param> public void Add(LoaderInfo loaderInfo) { if (m_loaderInfoDic == null) { m_loaderInfoDic = new Dictionary <System.Object, LoaderInfo>(); } if (m_loaderInfoList == null) { m_loaderInfoList = new List <LoaderInfo>(); } m_loaderInfoDic.Add(loaderInfo.scriptObj, loaderInfo); m_loaderInfoList.Add(loaderInfo); }