【UnityNote】多播委托、事件以及另一种实现方式

项目中有时需要同时调用多个对象中的多个方法,每次调用都一个个列出所需要的函数,那代码自然冗余且不易于维护,所以【委托和事件】就显得很有用了。

委托可以理解为若干方法的地址,可以删减和调用,可以通过+=进行多播,当然也可以-=进行删除,实现管理。

事件则是基于某种委托类型的对象,即委托是一种类型,而事件或者委托实例是一种对象。

但事件的声明有时也很麻烦,因此C#系统自带了Action和Func关键词,可以简化事件的声明。

比如控制鼠标点击,通畅的做法是单独建一个mouseController:

    // 设置事件 OnMouseClick
    public event Action<Vector3> OnMouseClick;
    public event Action<GameObject> OnEnemyClick;


    void MouseControl()
    {
        if(Input.GetMouseButtonDown(0) && hitInfo.collider != null)
        {
            if (hitInfo.collider.gameObject.CompareTag("Ground"))
                OnMouseClick?.Invoke(hitInfo.point);
            // onMouseClick? (?即为判断该事件是否触发,可选触发)
            else if (hitInfo.collider.gameObject.CompareTag("Enemy"))
                OnEnemyClick?.Invoke(hitInfo.collider.gameOb
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值