using Cysharp.Threading.Tasks; using System; using UnityEngine; using UnityEngine.UI; namespace PMaker.Extension { public static class UniTaskUGUIExtension { /// /// 异步匀速率打字机 /// /// UGUI.Text组件 /// 待打文字 /// 打字间隔(每字符)单位为毫秒(milliseconds) /// public static async UniTask DoTextAsync(this Text text, string data, int millisecondsDelay) { text.text = string.Empty; foreach (var item in data) { text.text += item; await UniTask.Delay(millisecondsDelay); } } /// /// 异步匀速率打字机, 无返回值 (UniTask官方文档指出, UniTaskVoid.Forget()比UniTask.Forget()更加高效.) /// /// UGUI.Text组件 /// 待打文字 /// 打字间隔(每字符)单位为毫秒(milliseconds) /// public static async UniTaskVoid DoTextAsyncVoid(this Text text, string data, int millisecondsDelay) { await text.DoTextAsync(data, millisecondsDelay); } } public static class UniTaskMonoBehaviourExtension { public static void Async(this MonoBehaviour behaviour, Func func) { UniTask.Void(func); } } }