/// <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); } }
/// <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); }