5点彻底搞懂委托与事件

这篇博客深入讲解Unity中的委托概念,包括如何定义委托类型、创建委托变量、添加和触发函数,以及委托在事件处理中的作用。此外,还介绍了event关键字的使用,它允许限制委托的触发权限,确保只有特定模块能触发事件。通过学习,读者将能够更好地理解和运用Unity中的委托和事件机制。
摘要由CSDN通过智能技术生成

前言

学unity的同学委托事件傻傻分不清楚,今天我就给大家来讲讲什么是Unity的委托的几个要点:

  1: 定义一个委托的类型

委托是一种容器,容器里面放的是函数方法。而函数的形式各不相同,参数,返回值各不相同,所以你做委托之前,先得要定义好这个委托容器存放的函数的类型,即委托类型。

delegate void Delegate_func(参数1, 参数2)

 这句是定义了一个Delegate_func的委托类型,里面存放的函数的类型为: void Delegate_func (参数1, 参数2)

  2: 定义一个委托容器变量,来存放函数

当我们定义好委托类型后,也就定义了这个容器存放什么样的函数,接下来我们定义一个委托变量, 这个就比较简单了,  Delegate_func clicks, 如何往容器里面加入函数呢?

一个是赋值=,一个 += 一个是-=;

clicks = xxxx函数; clicks += xxxx函数; clicks -= xxxx函数; 

 3: 触发委托:

   定义了好了函数类型后,将函数加入到委托容器后,你只要触发委托调用,委托就会帮你把容器里面的每个函数都调用一次, 触发的时候和调用普通函数没有区别,例如clicks(参数1, 参数2);

4: 委托有什么用呢?

  我们经常希望某个事件发生了以后,就做某种处理, 比如,收到网络事件后做响应的处理。这个时候,我们可以定义一个委托变量,将有事件发生后要处理的函数对象都保存进去, 当有事件发生的时候,触发这个委托,这样,之前的那些函数都会被调用到。有事件了,做哪些处理。

5: event又是什么鬼?

  会有这种情况,一个模块A定义了一个委托变量, 外部模块B,要给这个委托变量添加回掉函数, 这样,我们一般会把这个变量设置成public,直接可以访问,可是问题来了,触发的时候,A模块可以触发,B模块也可以触发,可是我如果只想要A模块触发,B模块只能添加,不能触发,而public 权限B模块也可以触发,这种如何解决呢?这个时候定义委托变量的时候,在前面加event, 这样外部模块B,只能往委托里面来添加函数,而不能触发函数调用,触发函数调用,只有模块A,这个就是event修饰的作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值