一幅图看懂委托

记得学委托跟事件的时候觉得不是很好理解,后来发现其实它是一个非常简单的东西.


为什么初学者觉得它不好理解呢?个人认为是把delegate翻译成委托 把evevt翻译成事件的人一定是英语老师,而不是程序员.


因为如果你去百度或者有道字典里去查它们的翻译真的就是直接翻译过来的 比如某地发生了一个大的事件你就可以说 a  big  event,这么直译带来的结果就是让新手难以理解.


那什么是委托?什么又是事件呢?


其实他们是一个东西,事件就是一个特殊的委托,或者更直接点事件就是委托(初学者可以暂时这么理解只不过出于安全考虑在委托的对象前面加一个event就变成了事件).



首先

委托的作用:传递方法.


其次

定义委托:public delegate void  OnValueChange();

创建委托对象:public OnValueChange  OnLevelChange;


最后

定义委托理解:你一定知道声明一个变量吧(int a )总知道吧,其实上面的OnValueChangeint是一样的东西,只不过int是C#语言定义好的,而OnValueChange是我们自己定义的罢了.



废话不多说了.简单点(个人不喜欢长篇大论)



直接上图:




        


上面是相互关联的两个脚本,左边是一个,右边是另外一个脚本


如果懂MVC的话就比较好理解,不懂的话此段略过,不影响理解,左边有的脚本是游戏中玩家角色的信息(MVC中的Model),比如血量,金币数量,等级这些东西.右边的脚本是显示的信息,你可以直接理解成UI(也就是MVC中的View).


下面这句很重要,能不能理解就看这句能不能懂了

在右边脚本中给委托对象注册方法后,在左边的脚本中触发,PlayerLevel发生改变时,就触发OnLevelChange的委托对象,然后它会自动调用右边脚本中给他注册的方法SetLevel,上面我说过委托的作用就是传递一个方法,也就是说OnLevelChange里面装着SetLevel这个方法.


看看像不像地雷  左边OnLevelChange是地雷的线,起触发的作用,绊到鬼子的腿就触发了,右边注册的方法相当于地雷,地雷爆炸,方法被调用.


好了就这些.






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值