1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
using UnityEngine; using System.Collections; public class Delegate
: MonoBehaviour { ///
<summary> ///
首先这里需要申明一个委托 ///
</summary> private delegate void ClickHandle(); ///
<summary> ///
创建一个委托事件,其实就类似于一个监听器 ///
</summary> private static event ClickHandle
OnClick; //
Use this for initialization void Start() { } void OnEnable() { //在代码被启用或者一开始的时候创建这个监听的实体方法,事实上
可要加入无数个触发的方法哦 Delegate.OnClick
+= OnClicked; Delegate.OnClick
+= OnClickEnd; } void OnDisable() { //代码被禁用了就可以关闭监听了 Delegate.OnClick
-= OnClicked; Delegate.OnClick
-= OnClickEnd; } //
Update is called once per frame void Update() { } void OnGUI() { if (GUI.Button( new Rect(10,
10, 50, 50), "click
Btn" )) //在需要的地方启动这个委托 Delegate.Click(); } ///
<summary> ///
这里声明成static是方便外部调用这个方法的监听 ///
</summary> public static void Click() { //当委托被触发时就去找自己的监听器,监听器便被调用,找到自
己身上捆绑的方法 if (OnClick
!= null ) OnClick(); } //////一下两个就是触发的实体方法了////////////// void OnClicked() { Debug.Log( "I
clicked" ); } void OnClickEnd() { Debug.Log( "I
clickend" ); } } |
Unity3D中的委托使用
最新推荐文章于 2024-02-28 08:27:25 发布