unity 中 delegate ,Action ,event 之间的关系,以及什么是事件什么是委托。应该如何使用的代码示例

在 Unity 中,委托(delegate)是一种类型,它定义了方法的签名,允许将方法作为参数传递。可以把委托看作是一个指向方法的指针。例如,定义一个委托:public delegate void MyDelegate(int num);,这里定义了一个接受一个整数参数且无返回值的委托类型。

Action 是.NET 框架提供的一种泛型委托。它有不同的重载形式,用于表示不同参数列表和无返回值的方法。例如,Action<int> 就等价于前面自定义的接受一个整数参数且无返回值的委托 MyDelegate。使用方式如 Action<int> myAction = (num) => Debug.Log(num);,这里使用了 Lambda 表达式来创建一个 Action 实例

事件(event)本质上是基于委托的一种封装。它主要用于对象间的消息传递,当特定事情发生时,对象可以触发事件通知其他对象。在 Unity 中,一个常见的场景是游戏对象的某些状态改变时通知其他脚本。

例如,定义一个事件:
using UnityEngine;
using System;

public class EventExample : MonoBehaviour
{
    // 定义委托
    public delegate void MyEventHandler();
    // 基于委托定义事件
    public event MyEventHandler MyEvent;

    private void Start()
    {
        // 注册事件处理方法
        MyEvent += OnMyEvent;
        // 触发事件
        TriggerEvent();
    }

    private void TriggerEvent()
    {
        if (MyEvent != null)
        {
            MyEvent();
        }
    }

    private void OnMyEvent()
    {
        Debug.Log("My event has been triggered.");
    }
}
总结来说,委托是基础,定义方法签名;Action 是框架提供的便捷委托类型;事件是基于委托实现的对象间通信机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值