利用System.Action做回调

来源:互联网 发布:数据农场采集器 编辑:程序博客网 时间:2024/06/15 03:32
using System;
using System.Collections.Generic;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using UnityEngine;




public class TooltipUI : BaseUI
{
public List<TooltipBase> ToolTips;
void Start(){
        //OpenTooltip(Dosomething);
OpenTooltip(TooltipType.Ok,"测试描述","OK",DoPressOkButton,DoPressCancelButton);
//OpenTooltip(TooltipType.OkCancle, "测试描述", "OK","取消", DoPressOkButton, DoPressCancelButton);
        //OpenTooltip(TooltipType.SmallTip,"测试玩着",Dosomething);
    }
public static TooltipUI Instance
{
get{
TooltipUI tooltipUI = UIManager.Instance.GetCurUI (UIType.TooltipUI) as TooltipUI;
if (tooltipUI == null) {
UIManager.Instance.OpenUI (UIType.TooltipUI);
}


tooltipUI = UIManager.Instance.GetCurUI (UIType.TooltipUI) as TooltipUI;


if (tooltipUI == null) {
Debug.LogError ("代码错误,界面没有正常打开");
}


return tooltipUI; 
}
}


    public override void AddListener()
    {
        base.AddListener();
    }
    public override void ReleaseListner()
    {
base.ReleaseListner();//TooltipUI.Instance.OpenTooltip(
    }
    public override void Init()
    {
        base.Init();


    }
    public override void OnLoad()
    {
        base.OnLoad();
    }
    
//回调测试
void Dosomething()
{
Debug.Log ("回调测试");
}
//按钮回调测试 
void  DoPressOkButton()
{
Debug.Log ("回调测试:您按下了OK按钮了!");
}
void DoPressCancelButton()
{
Debug.Log ("回调测试:您按下了Cancel按钮了");
}
    //TooltipType.Ok
    public void OpenTooltip(TooltipType type, string descript, string okStr, System.Action okCallback,System.Action cancelCallback)
    {
        TooltipOK tooltipOk=ToolTips[0] as TooltipOK;
        tooltipOk.OpenPanel(tooltipOk.gameObject);
        tooltipOk.SetData(type);
        if (okCallback == null)
            Debug.Log("okCallback空回调");
        tooltipOk.OKCallback = okCallback;
        if (tooltipOk.OKCallback == null)
            Debug.Log("OKCallback为空回调");
        tooltipOk.CancleCallback = cancelCallback;
        tooltipOk.OkBtnTxt.text = okStr;
        tooltipOk.DescriptTxt.text = descript;
        Debug.Log(this.GetHashCode());
    }
    //TooltipType.OkCancel
    public void OpenTooltip(TooltipType type, string descript, string okStr, string cancelStr, System.Action okCallback,System.Action cancelCallback)
    {
        TooltipOkCancel tooltipOkCancel = ToolTips[1] as TooltipOkCancel;
        tooltipOkCancel.OpenPanel(tooltipOkCancel.gameObject);
        tooltipOkCancel.SetData(type);
        tooltipOkCancel.DescriptTxt.text= descript;
        tooltipOkCancel.SaveBtnTxt.text = okStr;
        tooltipOkCancel.NonSaveBtnTxt.text = cancelStr;
        tooltipOkCancel.OKCallback = okCallback;
        tooltipOkCancel.CancleCallback = cancelCallback;
        
    }
   //TooltipType.SmallTip
   public void OpenTooltip(TooltipType type,string descript,System.Action okCallback)
   {
        TooltipSmallTip tooltipSmallTip = ToolTips[2] as TooltipSmallTip;
        tooltipSmallTip.OpenPanel(tooltipSmallTip.gameObject);
        tooltipSmallTip.SetData(type);
        tooltipSmallTip.DescriptTxt.text = descript;
        tooltipSmallTip.OKCallback = okCallback;
        tooltipSmallTip.AutoHid();
   }
public void OnClose(){
        UIManager.Instance.CloseUI(UIType.TooltipUI);
        Debug.Log("关闭测试");
    }


}
  
public enum TooltipType
{
OkCancle, //okcancle
Ok,
SmallTip,

}


--------------------------------------

条用另一个类实现回调

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TooltipOK : TooltipBase {

public Button OkButton;


public Button CloseButton;


    public Text OkBtnTxt;


public override void OnLoad()
{
base.OnLoad ();
}


public override void Init ()
{
base.Init ();


}
//--打开面板--
public override void OpenPanel(GameObject obj)
{
base.OpenPanel (obj);
}


//--关闭面板--
public void Invoke_Ok()
{
        if (OKCallback == null)
            Debug.Log("空调用");
if (OKCallback != null) {
OKCallback();
OKCallback = null;
}
        Debug.Log("调用确认按钮");
        ClosePanel(this.gameObject);
    }


public void Invoke_Close()
{
        Debug.Log("调用关闭按钮");
ClosePanel (this.gameObject);
if (CancleCallback != null)
{
CancleCallback();
CancleCallback = null;
}
}

}

原创粉丝点击