| |
|
开发:
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#基础(十)委托与事件 -> 正文阅读 |
|
[游戏开发]【Unity游戏开发】C#基础(十)委托与事件 |
前言本教程参考菜鸟教程,本人也是依赖菜鸟教程学习的C# 当你已经有其他的编程经验的时候,你再去学习别的语言,我觉得菜鸟教程是个不错的选择,你只需要把语言基础看完,然后就可以放心的去实战了,个中的语言细节是教不会的,需要你自己去实践 委托与事件1. 委托委托就是一个函数模板,或者你也可以理解为是一个变量,不同的是一般的变量是存储值的,而委托存储的是方法。 在你需要使用某个方法的时候,就可以通过委托调用。 1.1 委托的定义和简单使用在C#中,委托是使用 委托的定义格式:
在简单的使用就是需要声明委托,赋值,再使用
输出的结果就是:20 1.2 Action和FuncAction和Func是系统已经定义好的委托,能够让我们来随意调用,是使用泛型来定义的,能够支持我们大部分使用委托的场景。 区别是,Action是返回值为 而Func是具有返回类型,n个参数的委托。
1.3 多播委托委托分为多播委托和单播委托,单播委托就是我们上面所说的,里面只含有一个方法,所以我们通过委托调用的时候,也是只调用那一个方法。 而多播委托其实就是一个方法集合,放你调用多播委托的时候,就会将多播委托这个集合遍历,挨个调用里面的方法。 其实单播委托也可以看成是只有一个成员的多播委托。 使用多播委托的方法就是:
就是这样使用。 多播委托最好使用返回类型为void的,因为多播委托只能返回最后一个方法的返回类型。 而将方法从多播委托中移除的方法就是使用
2. 事件事件用通俗的话说就是:
在C#中使用事件的关键词是: event是用在声明委托变量时,写在委托类型的前面,下面看这个例子
在学习过委托后我们知道,使用委托需要给委托变量进行赋值,使用 而如果是事件的话,就不能使用 只能使用 当然,事件也是可以多播的。 Unity例子理解例如一个游戏中,玩家死亡时要干的事就有这些:
而如果我们在每个地方都定义一个方法,在玩家死亡后挨个调用,就会破坏代码的高内聚低耦合。 而如果我们使用事件,就只需要在玩家内部声明一个事件,然后只调用这个事件即可。 为了更好的理解事件,我们来举个例子,为了简化流程,我就只写玩家,UI脚本了,当然在此之前我们还应该创建一个Unity项目,创建出玩家和UI。 1. 创建场景在一个新的Unity项目中,我们使用一个 好了,完事了,一个简单的场景+玩家+UI就完事了,那么开始敲代码吧! 2. 编写脚本就随便写写好了。
3. 效果展示好了看看效果: 当然,你可以记住这句话:使用事件是为了代码安全性,使用委托是为了低耦合高内聚,当然事件也是特殊的委托。 结语成功的光彩靓丽之后是廉价的泪水和眼泪 欢迎喜爱Python,Unity(游戏开发引擎)的爱好者,让我们一步步走向大神,成功离得不远,也就两个字,坚持罢了!! Unity游戏引擎宣言: 你是否热爱游戏呢? 你是否曾经幻想着有一天自己做出一款属于自己的游戏呢? 不要犹豫了,赶快学习吧! 点击链接查看Python社区:Python交流社区 点击链接查看Unity社区:游戏开发爱好者 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 11:07:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |