unity c# 事件
2016-03-19 21:36
363 查看
委托的弊端
委托不禁可以使用 += 操作还可以使用 = 操作
如果我们有两个类 SkillUIView 和 EquipMentUIView 俩个类中同时监听一个委托
methodDelegate.DataChangeNotice += SkillUIDataChange;
methodDelegate.DataChangeNotice += EquipMentUIDataChange;
这个时候是没有问题的。
但如果我们不小心把SkillUIView类中的委托监听写成了
methodDelegate.DataChangeNotice = SkillUIDataChange;
那么就导致EquipMentUIView中收不到委托的通知。
事件只允许使用+=符号,这样就可以避免这种情况的发生。
当时用委托时,一般会出现两种角色:广播者和订阅者。
广播者是包含委托字段的类。他决定何时调用委托广播。
订阅者是方法目标的接收者,通过在广播者的委托上调用+=和-=,决定何时开始和结束监听。一个订阅者不知道也不干涉其他的订阅者。
事件是这一模式的正式化的语言形态。事件是只显示委托中广播/订阅需要的子特性的结构。使用事件的主要目的在于:保护订阅者互不影响。
我们可以这样来声明一个事件
使用方法和委托的一样,只是只允许使用+=操作符
委托不禁可以使用 += 操作还可以使用 = 操作
如果我们有两个类 SkillUIView 和 EquipMentUIView 俩个类中同时监听一个委托
methodDelegate.DataChangeNotice += SkillUIDataChange;
methodDelegate.DataChangeNotice += EquipMentUIDataChange;
这个时候是没有问题的。
但如果我们不小心把SkillUIView类中的委托监听写成了
methodDelegate.DataChangeNotice = SkillUIDataChange;
那么就导致EquipMentUIView中收不到委托的通知。
事件只允许使用+=符号,这样就可以避免这种情况的发生。
当时用委托时,一般会出现两种角色:广播者和订阅者。
广播者是包含委托字段的类。他决定何时调用委托广播。
订阅者是方法目标的接收者,通过在广播者的委托上调用+=和-=,决定何时开始和结束监听。一个订阅者不知道也不干涉其他的订阅者。
事件是这一模式的正式化的语言形态。事件是只显示委托中广播/订阅需要的子特性的结构。使用事件的主要目的在于:保护订阅者互不影响。
我们可以这样来声明一个事件
public delegate void DataChange(); public event DataChange DataChangeNotice;
使用方法和委托的一样,只是只允许使用+=操作符
相关文章推荐
- unity c# 接口
- Unity4.6 UI按钮绑定事件(一)
- 详解Unity 4.6新UI的布局
- 学习Unity 4.6新GUI系统
- Unity ugui 和 模型 粒子的层级管理
- unity3d热更新插件uLua学习整理
- 初学者学习 - Unity中的热更新 - Lua和C#通信
- Unity3D小小小经验篇——Canvas
- Unity3d 着色器语法(Shader)
- Unity3D Shader
- Change Queue Not Work In Unity Shader
- unity-programming-c#-2-new project
- Unity3D&AI:寻路(1):A星寻路,在Unity上用C#代码实现。
- unity 键盘检测代码编码总结
- unity使用UGUI创建摇杆
- unity使用UGUI创建摇杆
- disunity unity3d资源破解
- Unity3D 设置Label TextField字体字号大小
- unity5的lightmap烘焙产生斑点(黑斑)处理
- Unity 项目中的音效管理器