C# 回调方法

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;
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值