- 委托(delegate)
event / Action 的底层实现,适用性最广。概念有点类似函数指针。 - 事件(event)
对委托的封装,受限制的委托。具体表现为:
(1)只有定义事件的类中,才可以进行 =null / Invoke() 操作。
(2)外部类可以进行 += / -= 操作,但不能进行 =null / Invoke() 操作。 - Action / Function
Action:无参数无返回值的委托,相当于一个语法糖(定义无参数无返回值的委托时,如果懒的取名字就用它)。
Func:与 Action 类似,但是可以有返回值。
- UnityEvent / UnityAction
UnityEvent:Unity 封装事件。好处是可在 Inspector 面板添加处理函数,如下图所示:
UnityAction:Unity Action(定义和 C# Action 没有任何区别,但 UnityEvent 的 AddListener() 只接受该类型参数。大概是为了命名的统一性吧?)using System; using UnityEngine; using UnityEngine.Events; public class Player : MonoBehaviour { //C# 委托/事件/Action public delegate void HealthChanged(); public HealthChanged HealthChangedDelegate; //C# 委托 public Action HealthChangedAction; //C# Action: 无参数无返回值的委托,相当于一个语法糖(定义无参数无返回值的委托时,如果懒的取名字就用它)。 public Func<int, string> HealthChangedFunc; //C# Func: 与 Action 类似,但是可以有返回值。 public event HealthChanged HealthChangedEvent; //C# 事件 //Unity 封装 事件/Action public UnityEvent HealthChangedUnityEvent; //Unity 封装事件(好处是脚本挂载到对象后可在 Inspector 面板添加处理函数) public UnityAction HealthChangedUnityAction; //Unity Action(定义和 C# Action 没有任何区别,但 UnityEvent 的 AddListener() 只接受该类型参数。大概是为了命名的统一性吧?) public Player() { //委托/事件/Action 初始化 HealthChangedDelegate = null; HealthChangedAction = null; HealthChangedEvent = null; HealthChangedUnityAction = null; HealthChangedUnityEvent = new UnityEvent(); //委托/事件/Action 订阅(绑定) #region HealthChangedDelegate += OnHealthChanged; //C# 委托/事件/Action 支持 +=/-= 操作符 HealthChangedAction += OnHealthChanged; //可以直接用 +=/-= 来增加/移除处理函数 HealthChangedEvent += OnHealthChanged; HealthChangedUnityAction += OnHealthChanged; HealthChangedUnityEvent.AddListener(OnHealthChanged); //UnityEvent 不支持 +=/-= 操作符(改用 AddListener()函数) HealthChangedUnityEvent.AddListener(HealthChangedUnityAction); //AddListener()函数参数既可以是处理函数,也可以是 UnityAction 实例 #endregion //委托/事件触发(调用) HealthChangedDelegate.Invoke(); HealthChangedAction.Invoke(); HealthChangedEvent.Invoke(); HealthChangedUnityAction.Invoke(); HealthChangedUnityEvent.Invoke(); } public void OnHealthChanged() { //... } }
- 参考文档
委托与事件
UnityEvent - Unity 手册
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南