コード例 #1
0
ファイル: LoaderTask.cs プロジェクト: Qn880914/IGGGame
        /// <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);
        }
コード例 #2
0
ファイル: LoadTask.cs プロジェクト: Qn880914/GameReborn
        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);
        }