接触委托 代理 delegate很久啦。除了看API,Kotoba也给我讲了 。说到委托,拿下面这个小例子比较好。(14年6月26花花给我的练习)
实例:写一个方法A,定义个方法B(打印hello),和方法C(打印world),其中我只允许调用方法A。实现,1秒后打印出hello,3秒后打印出world。
先说一下回调的好处:
在开发中我们有些代码呢,是很固定的,但又有一些东西很灵活很容易发生变动。先假设B和C都不是我们自己写的,而是其他人已经写好的其他方法,所以我们在无BUG的情况下,尽可能不去修改别人的方法,这个时候方法A是我们自己写的,我们有个需求那就是1秒后调用方法B,3秒后调用方法C,这就是现在的写法。 可能我需求增加之后呢,类似的代码会越来越多。比如4秒后执行方法D,但突然哪天你觉得方法A执行的太慢了,改了下时间,改为0.5秒,那对后面几个方法都要改,这样会很麻烦。然后我们稍加改动,这样修改方法B的时间也不会影响其他方法的执行。
public delegate void DeleMethod(); void Start() { StartCoroutine(FunA(2,FunB)); StartCoroutine(FunA(3,FunC)); } IEnumerator FunA(float time ,DeleMethod m) { yield return new WaitForSeconds(time); m(); } void FunB() { print("hello"); } void FunC() { print("world"); }
时间: 2024-10-13 22:20:32