Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }