using System; using Cysharp.Threading.Tasks; using GameFramework; using GameFramework.Localization; using UnityGameFramework.Runtime; namespace SepCore.AsyncTask { /// /// Localization 异步扩展方法 /// public static class LocalizationAsyncExtension { /// /// 异步加载字典 /// /// 本地化组件 /// 字典资源名称 /// 用户自定义数据 /// 超时时间(秒),0表示不超时 /// 加载成功事件 public static UniTask LoadDictionaryAsync(this LocalizationComponent localizationComponent, string dictionaryAssetName, object userData = null, float timeout = 30f) { UniTask waitTask = AsyncTaskHelper.WaitSuccessOrFailureAsync( LoadDictionarySuccessEventArgs.EventId, LoadDictionaryFailureEventArgs.EventId, successArgs => successArgs.DictionaryAssetName == dictionaryAssetName && ReferenceEquals(successArgs.UserData, userData), failureArgs => failureArgs.DictionaryAssetName == dictionaryAssetName && ReferenceEquals(failureArgs.UserData, userData), timeout ); localizationComponent.ReadData(dictionaryAssetName, userData); return waitTask; } } }