【unity2D】API-学习记录4-委托Delegate

目标

事件Event是基于委托Delegate的,所以先来学习Delegate的基本概念及其初步应用

是什么

形象地说,委托是存放函数的容器

委托不关心一个函数是如何实现的,它的形态只是一个函数签名,亦可理解为:它定义了某类 具有同样函数签名和返回值的 函数的“类型”

委托除了Delegate,还有Action、Func、predicate,这里我们先只学习Delegate。

使用步骤

使用Delegate,一般分为三步:

  1. 定义委托类型。

当我们用delegate关键字声明委托时,编译器自动为我们生成类。类的名字即为委托变量名,访问类型为定义的委托访问类型。

  1. 声明一个或多个该类型的委托函数。
  2. 把委托函数添加进委托中。
  3. 通过该委托来调用该函数。

代码相关

using UnityEngine; public class DelegateTest : MonoBehaviour { public delegate void PlantAttck(int zombieNO);//定义委托类型 public PlantAttck plantAttck;//声明委托变量 void Update() { if(Input.GetKeyDown(KeyCode.K)) { plantAttck = null; plantAttck += CabbageAttack; plantAttck += PeaAttack; plantAttck(2);//调用委托 } if(Input.GetKeyDown(KeyCode.L)) { plantAttck = null; plantAttck += PeaAttack; plantAttck += CabbageAttack; plantAttck(3);//调用委托 } } void PeaAttack(int zombieNO)//传入僵尸的编号,使豌豆们指定攻击该僵尸 { Debug.Log("Peas are attacking NO."+ zombieNO +" zombie."); } void CabbageAttack(int zombieNO)//传入僵尸的编号,使卷心菜们指定攻击该僵尸 { Debug.Log("Cabbages are attacking NO."+ zombieNO +" zombie."); } }

依次按下K、L键,结果如图
image

总结

使用委托时,一般分四步:

  1. 定义委托类型。
  2. 声明一个或多个该类型的委托函数。
  3. 把委托函数添加进委托中。
  4. 通过该委托来调用该函数。

注意事项

从上面代码和输出结果应该可以看出一些端倪:

  1. delegate变量作为函数容器,可以同时被添加进多个函数。这种delegate一般被称为multicast delegate。

  2. 函数原型相同时,把这类函数添加到delegate里,delegate就能按照添加顺序,执行它添加的所有函数

参考资料

委托(C# 编程指南)
C# Event/UnityEvent辨析


__EOF__

本文作者OtusScops
本文链接https://www.cnblogs.com/OtusScops/p/14722349.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   AshScops  阅读(169)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示