/// <summary> /// 获得加载器 /// </summary> /// <param name="type">类型</param> /// <param name="path">路径</param> /// <param name="param">附加参数</param> /// <param name="async">异步</param> /// <returns>加载器</returns> public Loader GetLoader(LoaderType type, string path, object param, bool async) { if (!m_DicLoaderDatas.TryGetValue(path, out LoaderData loaderData)) { loaderData = LoaderDataPool.Get(type); if (loaderData == null) { loaderData = new LoaderData { referenceCount = 0, loader = LoaderPool.Get(type), completeCallbacks = new List <LoadCompleteCallback>() }; } loaderData.loader.Init(path, param, null, OnLoadCompleted, async); m_DicLoaderDatas.Add(path, loaderData); } if (!async) { loaderData.loader.async = false; } ++loaderData.referenceCount; return(loaderData.loader); }
/// <summary> /// 归还加载器 /// </summary> /// <param name="loader">加载器</param> public void ReleaseLoader(Loader loader) { if (!m_DicLoaderDatas.TryGetValue(loader.path, out LoaderData loaderData)) { return; } if (--loaderData.referenceCount > 0) { return; } m_DicLoaderDatas.Remove(loader.path); LoaderDataPool.Release(loaderData); }