/// <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); }
private Loader AddLoadTask(LoaderType type, string path, object param, UnityAction <Loader, object> callback, bool async) { Loader loader = LoaderPool.Get(type); loader.Init(path, param, OnLoadProgress, callback, async); if (!async) { m_Loaders.Add(loader); loader.Load(); } else { m_LoaderQueue.Enqueue(loader); if (m_CountTotal != 0) { ++m_CountTotal; } } if (0 == m_Loaders.Count) { CheckNextTask(); } return(loader); }