| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity/C#知识点 -- Lambda表达式、委托Delegate、事件Event、Action、Func、UnityAction、UnityEvent综述 -> 正文阅读 |
|
[游戏开发]Unity/C#知识点 -- Lambda表达式、委托Delegate、事件Event、Action、Func、UnityAction、UnityEvent综述 |
Lambda表达式 Lambda表达式本质上就是定义匿名函数 1 Lamba表达式基本结构
2 将函数改写为Lambda表达式2.1 无返回值无参数时
2.2 有参数无返回值时
2.3 有返回值有参数时
委托Delegate委托可以理解为存储方法的数组,通过委托可以将几个具有相同形参类型和返回值类型的方法加入到一个委托中一并执行 1 定义委托
2 实例化委托
3 向委托中添加/删除函数
4 调用委托
完整代码
输出结果: 委托的使用类内和类外无差别 事件Event事件可以理解为委托的一个实例(不太严谨),在类的内部声明事件,必须先声明该事件对应的委托类型 同时事件不仅可以添加函数进去,还可以加入委托
输出结果: 事件与委托的区别:
ActionAction可以理解为系统定义好的带泛型的delegate,Action是无返回值的 要使用Action需要引用头文件
Action的泛型T代表参数,T内可以传多个参数
输出结果: FuncFunc可以理解为系统定义好的带泛型的delegate,Func是有返回值的 要使用Func需要引用头文件
Func<T,K>的前n-1个泛型代表参数, 最后一个泛型代表返回值类型
输出结果: UnityActionUnityAction是Unity对C#中Action的再封装,是更适合再Unity中使用的一种泛型委托,用法和Action一样 需要包含头文件:
输出结果: UnityEventUnityEvent可以在面板中添加监听事件,也可以在代码中添加监听事件或UnityAction
UGUI中的Buttom点击事件,就继承自UnityEvent,可以将UnityEvent显示在监视器面板中 在代码中调用event,只能使用Invoke方法调用,同时,UnityEvent内添加的方法可以是UnityAction 用 AddListener 和 RemoveListener 分别为事件添加和移除方法
输出结果: 配合监视器面板使用: 监视器如下: 添加的相关函数如下:
再次调用上面的
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/22 18:53:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |