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