为Unity的button添加一个异步方法——OnClickAsync()

该文介绍了一种在Unity中为Button组件添加异步点击事件处理的方法,通过扩展方法、定义委托Action,将Action绑定到Button的onClick事件上,并使用异步循环等待直到事件触发,然后移除监听。这种方法允许在点击事件中进行异步操作,同时提供了取消等待的可能性。
摘要由CSDN通过智能技术生成

在使用异步编程模式下,如何为某个component添加一个异步方法?
举例:为一个Button添加一个Click的异步等待方法

实现的步骤:

  • 1、使用扩展方法
  • 2、定义一个委托Action
  • 3、把Action绑到Button的onClick上
  • 4、循环等待onClick事件
  • 5、等到后解除Action的绑定

此处只做举例用,更为完善的写法,应该加入取消等待…

/// <summary>
/// 为Button定制一个扩展方法:点击事件的异步等待
/// </summary>
/// <param name="button">按钮Button</param>
/// <param name="delayMs">循环等待中delay的时间-毫秒</param>
/// <returns>Task</returns>
public static async Task OnClickAsync(this Button button,int delayMs = 50)
{
    bool clicked = false;
    UnityAction ClickAction = () => 
    {
        clicked = true;
        Debug.Log($"ClickAction() was called {Time.realtimeSinceStartup}");
    };

    //Debug.Log("添加侦听");
    button.onClick.AddListener(ClickAction);      

    while (!clicked)
    {            
        await Task.Delay(delayMs); //等待时间【ms毫秒】
    }

    //Debug.Log("移除侦听");
    button.onClick.RemoveListener(ClickAction);

    ClickAction = null;
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值