using Cysharp.Threading.Tasks; using UnityGameFramework.Runtime; namespace SepCore.AsyncTask { /// /// Config 异步扩展方法 /// public static class ConfigAsyncExtension { /// /// 异步加载配置 /// /// 配置组件 /// 配置资源名称 /// 用户自定义数据 /// 超时时间(秒),0表示不超时 /// 加载成功事件 public static UniTask LoadConfigAsync(this ConfigComponent configComponent, string configAssetName, object userData = null, float timeout = 30f) { UniTask waitTask = AsyncTaskHelper.WaitSuccessOrFailureAsync( LoadConfigSuccessEventArgs.EventId, LoadConfigFailureEventArgs.EventId, successArgs => successArgs.ConfigAssetName == configAssetName && ReferenceEquals(successArgs.UserData, userData), failureArgs => failureArgs.ConfigAssetName == configAssetName && ReferenceEquals(failureArgs.UserData, userData), timeout ); configComponent.ReadData(configAssetName, userData); return waitTask; } /// /// 异步加载配置(通过字典加载) /// /// 配置组件 /// 字典名称 /// 用户自定义数据 /// 超时时间(秒),0表示不超时 /// 加载成功事件 public static UniTask LoadConfigFromDictionaryAsync(this ConfigComponent configComponent, string dictionaryName, object userData = null, float timeout = 30f) { UniTask waitTask = AsyncTaskHelper.WaitSuccessOrFailureAsync( LoadConfigSuccessEventArgs.EventId, LoadConfigFailureEventArgs.EventId, successArgs => successArgs.ConfigAssetName == dictionaryName && ReferenceEquals(successArgs.UserData, userData), failureArgs => failureArgs.ConfigAssetName == dictionaryName && ReferenceEquals(failureArgs.UserData, userData), timeout ); configComponent.ReadData(dictionaryName, userData); return waitTask; } } }