美文网首页
unity5点彻底搞懂委托与事件

unity5点彻底搞懂委托与事件

作者: 游戏开发大表哥 | 来源:发表于2019-08-15 14:57 被阅读0次

 学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修饰的作用。

我创建了个学习交流群 点击链接即可加群点击链接加入群聊【cocos/unity交流群】

相关文章

  • unity5点彻底搞懂委托与事件

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

  • 5点彻底搞懂委托与事件

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

  • untiy——5点彻底搞懂委托与事件

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

  • unity:5点彻底搞懂委托与事件

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

  • [学习]拥抱kotlin(六)

    今天看委托模式。有一篇讲得不错的: 一文彻底搞懂Kotlin中的委托[https://juejin.cn/post...

  • 原始类型与事情委托

    1.绑定事件: 二、事件冒泡与事件捕获 事件委托 案例见事件委托 计时器

  • 事件与事件委托

    DOM0级事件: 通过javascript制定事件处理程序的传统方式。就是将一个函数赋值给一个事件处理属性。第四代...

  • C#——委托与事件系列一

    本来应该学习泛型与委托的,但是发现C#这里还没有系统的记录过委托与事件,所以先打算把委托与事件补上再继续泛型与委托...

  • 总结.Net基础知识——献给即将入坑的同行们(二期)

    事件是不是一种委托? 委托是一种安全的函数指针,事件是一种消息机制 委托与事件是什么关系?为什么要使用委托 委托提...

  • 委托与事件

    两个窗体form1和form2点击form1按钮跳转到form2点击form2按钮,form1中按钮文字变化 fo...

网友评论

      本文标题:unity5点彻底搞懂委托与事件

      本文链接:https://www.haomeiwen.com/subject/upezjctx.html