Exemplo n.º 1
0
        /// <summary>
        /// 添加更新
        /// </summary>
        /// <param name="handler">更新回调接口</param>
        /// <param name="isFirst">添加到List头部,目前用于Time更新,其余情况不要使用</param>
        /// <returns></returns>
        public void AddUpdate(IScheduleHandler handler, bool isFirst = false)
        {
            if (handler == null)
            {
                return;
            }

            for (int i = 0; i < _updates.Count; i++)
            {
                if (_updates[i] == handler)
                {
                    return;
                }
            }

            if (isFirst)
            {
                _updates.Insert(0, handler);
            }
            else
            {
                _updates.Add(handler);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 添加任务
        /// </summary>
        /// <param name="assetData">资源数据</param>
        public void AddTask(ref AssetData assetData)
        {
            if (assetData.Type == AssetType.UnityScene && assetData.Priority != LoadPriority.Wait)
            {
                JW.Common.Log.LogE("Loader.AddTask : invalid parameter - {0}", assetData.Name);
                assetData.Priority = LoadPriority.Wait;
            }

            if (_synLoading && (assetData.Priority == LoadPriority.Wait))
            {
                JW.Common.Log.LogE("Loader.AddTask : load is runing, can't add wait load asset - {0}", assetData.Name);
                return;
            }

            if (assetData.Priority != LoadPriority.Wait)
            {
                //进行中 重复
                for (int i = 0; i < _resourceRequesting.Count; i++)
                {
                    LoadData loadData = _resourceRequesting[i];
                    if (assetData.Type == loadData.Data.Type &&
                        assetData.Name.Equals(loadData.Data.Name, StringComparison.OrdinalIgnoreCase) &&
                        (assetData.Callback == loadData.Data.Callback))
                    {
                        loadData.Data = assetData;
                        _resourceRequesting.RemoveAt(i);

                        bool insert = false;
                        for (int j = _resourceRequesting.Count - 1; j >= 0; j--)
                        {
                            if (_resourceRequesting[j].Data.Priority <= loadData.Data.Priority)
                            {
                                _resourceRequesting.Insert(j + 1, loadData);
                                insert = true;
                                break;
                            }
                        }

                        if (!insert)
                        {
                            _resourceRequesting.Insert(0, loadData);
                        }

                        return;
                    }
                }
            }

            //重复?
            for (int i = 0; i < _data.Count; i++)
            {
                AssetData data = _data[i];

                if (assetData.Callback == data.Callback &&
                    assetData.Type == data.Type &&
                    assetData.Name.Equals(data.Name, StringComparison.OrdinalIgnoreCase))
                {
                    _data.RemoveAt(i);
                    break;
                }
            }


            for (int i = _data.Count - 1; i >= 0; --i)
            {
                if (_data[i].Priority <= assetData.Priority)
                {
                    _data.Insert(i + 1, assetData);
                    return;
                }
            }

            _data.Insert(0, assetData);
        }