Unity3D中的委托使用

来源:互联网 发布:au录音软件安装 编辑:程序博客网 时间:2024/06/06 00:26
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");
    }
}
原创粉丝点击