- 定义事件的类------
定义某种类型的事件---------在方法中传递该事件类型的参数并调用------将这个类中的数据传递给事件方法并调用
using UnityEngine; using System.Collections; public class CallBackTest : MonoBehaviour { public System.Action NoParamersCallBack; public System.Action<int> ValueCallBack; public delegate bool CallBackDelegate(Info f); public event CallBackDelegate calld; public static CallBackTest _instancs; public int i; public string ss; public Info f; void Awake() { _instancs = this; i = Random.Range(2, 8); f = new Info("sb", true); } // Use this for initialization void Start() { NoParamersCallBack += callme; NoParamersCallBack(); } public void callme() { Debug.Log("内部注册了事件"); } // 值类型参数 public void GET(System.Action<int> call, string s = "") { ss = s; Debug.Log(ss); call(i); } // 引用 public void GETMore(CallBackDelegate calld) { calld(f); } public class Info { public string name; public bool isMen; public Info(string name, bool ismen) { this.name = name; isMen = ismen; } } }
- 传递调用的类
调用方法----传递回调函数-----得到定义事件类的信息
using UnityEngine; using System.Collections; public class Call : MonoBehaviour { public int C; void Awake() { CallBackTest._instancs.NoParamersCallBack += T; } // Use this for initialization void Start() { CallBackTest._instancs.GET(T1, "shabi"); CallBackTest._instancs.GETMore(T2); } public void T() { Debug.Log("外部注册的事件"); } public void T1(int A) { C = A * A; Debug.Log(C); } public bool T2(CallBackTest.Info i) { i.name = "caibi"; i.isMen = false; Debug.Log(string.Format("名字:{0}", CallBackTest._instancs.f.name)); Debug.Log(string.Format("性别:{0}", CallBackTest._instancs.f.isMen)); return i.isMen; } }