[Unity&C#&事件委托]对委托事件的学习与实践
来源:互联网 发布:最全金融网络理财产品 编辑:程序博客网 时间:2024/06/09 20:32
很多人对 委托 事件 进行了 写文章,本文不一定是最好的,但是是
最“看图识字”的。
-------------------------------------------------------------------------------------
1.通过对 参考资料 1 进行 测试。
对象的配置
“T_Delegate_Event”代码:
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class T_Delegate_Event : MonoBehaviour { //public Button Button_1;//+1 //public Button Button_2;//-1 private delegate void DebugString(string debug_str);//定义一个委托 public void DebugNameOfCN(string str)//输出中文名字 {Debug.Log(" 中文名字: "+str);} public void DebugNameOfEN(string str)//输出英文名字 { Debug.Log(" EN Name: " + str);} private DebugString HandlerDebugString;//定义一个委托的变量事件 public void DebugEventButon_1() { HandlerDebugString = DebugNameOfCN; HandlerDebugString("尼古拉斯 赵思"); } public void DebugEventButon_2() { HandlerDebugString = DebugNameOfEN; HandlerDebugString("Nicholas Zhao four"); }}结果:
按下对应的按钮,显示 对应的名字
-------------------------------------------------------------------------------------
2.测试委托事件的多路广播
代码:在测试 1的基础上加上 start函数 的内容
void Start() { //给委托对象赋值 HandlerDebugString = DebugNameOfCN; HandlerDebugString("1***尼古拉斯 赵思"); Debug.Log("................................"); //给委托对象再加一个事件,叫多路广播 HandlerDebugString += DebugNameOfEN; HandlerDebugString("2***Nicholas Zhao four"); Debug.Log("................................"); //输出中文试试 HandlerDebugString("3***尼古拉斯 赵思"); Debug.Log("................................"); //给委托对象减去一个事件 HandlerDebugString -= DebugNameOfCN; HandlerDebugString("4***Nicholas Zhao four"); }
显示结果:
逻辑图:
-------------------------------------------------------------------------------------
把 上图 变成 下图,样式
变成了
2.1这是正常 的情况
情况如下所示
2.2把 += 变成 了 =
结果如下所示
由2.1和2.2得出结论,委托声明类似 class 类的声明,
private delegate void DebugString(string debug_str);//定义一个委托定义一个 事件 类似 class 类 变量
private DebugString HandlerDebugString;//定义一个委托的变量事件委托变成private class test_class{....}
事件变成private test_class test_event;
也是一样的。
而事件 一开始 没有 赋予 函数的时候,就没有事件。
当事件 赋予 了一个 函数 的值 的时候。
HandlerDebugString = DebugNameOfCN;
HandlerDebugString("1***尼古拉斯 赵思");
就会显示
当事件 已经 赋予 了 一个 函数值,再 += 一个 函数的时候。
HandlerDebugString = DebugNameOfCN;
HandlerDebugString("1***尼古拉斯 赵思");
HandlerDebugString += DebugNameOfEN;
HandlerDebugString("2***Nicholas Zhao four");
Debug.Log("................................");
就有了2个事件,显示
-------------------------------------------------------------------------------------
参考资料:
1.[unity3d]unity中C#委托的应用
http://blog.csdn.net/dingxiaowei2013/article/details/18428727
2.
3.
4.
5.
6.
- [Unity&C#&事件委托]对委托事件的学习与实践
- 委托与事件的学习
- unity学习之委托与事件的初步应用
- C#:委托与事件
- C#:委托与事件
- C#-委托与事件
- 【Unity经验】委托与事件
- 我对委托与事件的理解
- 我对委托与事件的理解
- C#/.net委托与事件
- C#.net 事件与委托
- C#—委托与事件
- 对事件委托的理解
- 对事件与委托的理解(1) 使用事件
- 对事件与委托的理解(2) 引发事件
- 对事件与委托的理解(3) 事件示例
- unity 事件(委托)
- unity 事件(委托)
- 使用cocos2d-x游戏引擎做一个helloworld界面
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- Kotlin ---- 环境搭建和命令行编译运行HelloWorld
- phpstorm 免费激活码
- Android7.0中文文档(API)--- AbsoluteLayout
- [Unity&C#&事件委托]对委托事件的学习与实践
- wordpress搬家换域名
- 2017 年物联网开发趋势报告:Linux 仍是 IoT 的主要操作系统
- Windows下更改Python默认版本的方法
- sdut-3916 上色的纱雾
- JAVA简单二维码实现
- 在 Ubuntu 上使用 Nginx 部署 Flask 应用 【已翻译100%】
- 控制页面不能回退
- 面向对象设计原则之五--迪米特法则