1.定义事件的类------
定义某种类型的事件---------在方法中传递该事件类型的参数并调用------将这个类中的数据传递给事件方法并调用
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();
}
// Update is called once per frame
void Update () {
}
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 ;
}
}
}
2.传递调用的类
调用方法----传递回调函数-----得到定义事件类的信息
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);
}
// Update is called once per frame
void Update () {
}
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;
}
}