using System; using Cysharp.Threading.Tasks; using DG.Tweening; using DragonSoul.Shared; using TMPro; namespace UnityTest.ZXL { public static class ETTaskHelper { public static async ETTask WaitFinish(Action action, ETCancellationToken token = null) { ETTask task = ETTask.Create(); await task; } /// /// 等待完成(自动床奶奶) /// /// /// public static async ETTask WaitCompletion(ETCancellationToken token = null) { ETTask task = ETTask.Create(); token?.Add(Cancel); void Cancel() { task.SetResult(false); token = new ETCancellationToken(); } var isTrue = await task; token.Remove(Cancel); return isTrue; } public static async ETTask WaitCompletion(ETTask task, ETCancellationToken token = null) { task = ETTask.Create(); token?.Add(Cancel); void Cancel() { task.SetResult(false); token = new ETCancellationToken(); } var isTrue = await task; token?.Remove(Cancel); return isTrue; } public static async ETTask WaitTime(float time, ETCancellationToken token = null) { await UniTask.Delay(TimeSpan.FromSeconds(time)); } public static async ETTask WaitDoTMPText(this TextMeshProUGUI text, string content, string audioName, ETCancellationToken token = null) { bool isEnd = false; var t = 0.1f * content.Length; DOTween.KillAll(); if (audioName != "") { t = Script.AudioManager.Instance.PlayOtherSound(false, $"6-4/{audioName}") + 0.1f; } await DOTween.To(() => string.Empty, value => text.text = value, content, t) .SetEase(Ease.Linear).AwaitForComplete().SuppressCancellationThrow(); } } }