unity+button动态添加事件

首先

EventTriggerListener .cs
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class EventTriggerListener : UnityEngine.EventSystems.EventTrigger{
	public delegate void VoidDelegate (GameObject go);
	public VoidDelegate onClick;
	public VoidDelegate onDown;
	public VoidDelegate onEnter;
	public VoidDelegate onExit;
	public VoidDelegate onUp;
	public VoidDelegate onSelect;
	public VoidDelegate onUpdateSelect;

	static public EventTriggerListener Get (GameObject go)
	{
		EventTriggerListener listener = go.GetComponent<EventTriggerListener>();
		if (listener == null) listener = go.AddComponent<EventTriggerListener>();
		return listener;
	}
	public override void OnPointerClick(PointerEventData eventData)
	{
		if(onClick != null) 	onClick(gameObject);
	}
	public override void OnPointerDown (PointerEventData eventData){
		if(onDown != null) onDown(gameObject);
	}
	public override void OnPointerEnter (PointerEventData eventData){
		if(onEnter != null) onEnter(gameObject);
	}
	public override void OnPointerExit (PointerEventData eventData){
		if(onExit != null) onExit(gameObject);
	}
	public override void OnPointerUp (PointerEventData eventData){
		if(onUp != null) onUp(gameObject);
	}
	public override void OnSelect (BaseEventData eventData){
		if(onSelect != null) onSelect(gameObject);
	}
	public override void OnUpdateSelected (BaseEventData eventData){
		if(onUpdateSelect != null) onUpdateSelect(gameObject);
	}
}

  TKDeviceInformationManager.cs

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TKDeviceInformationManager : TKUIManager
{
  
    public Button CheckButton;//校对
    
    // Use this for initialization
    void Start()
    {
       
        OnBindEvent();
    }
  
    public override void OnBindEvent()
    {
        base.OnBindEvent();
        EventTriggerListener.Get(CheckButton.gameObject).onClick = OnCheckButtonClick;
    }
    private void OnCheckButtonClick(GameObject go)
    {
        if (go == CheckButton.gameObject)
        {
            OnCheckButton();
        }
    }
    private void OnCheckButton()
    {
    Debug.Log("ClickCheckButton");
    }
}

  TKUIManager.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TKUIManager : MonoBehaviour {
    private GameObject createObject;
	// Use this for initialization
	void Start ()
    {
		
	}
	
	// Update is called once per frame
	void Update ()
    {
		
	}
    public virtual void OnInit()
    {

    }

    public virtual void OnBindEvent()
    {

    }
    public void OnClickOpenFile()
    {
        OpenDocuments.OpenDocumentsInstance.OnOpenFileButton();
    }

    public void OnClickOpenURL(string strURL)
    {
        TKLocalFileOperationSingle.singleton.OnOpenLocalFile(strURL);

    }
	public GameObject OnCreateButton(string InstantiateName,RectTransform InstantiateParent)
	{
        GameObject InstantiatePath = Resources.Load<GameObject>(InstantiateName);
        return Instantiate(InstantiatePath,InstantiateParent);
		
	}
    public GameObject OnCreateObject(Transform TaskParent,string ObjName)
    {
        createObject = (GameObject)Instantiate(Resources.Load(ObjName));
        
        createObject.GetComponent<RectTransform>().SetParent(TaskParent);
        createObject.name = ObjName;
        createObject.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, 0);
        createObject.transform.localScale = new Vector3(1, 1, 1);
        //var taskDegreeX = StartPosization + i * (TaskDegreePrafabWidth + TaskDegreeSpace);
        ////Debug.LogError("X"+i+"   "+taskDegreeX);
        //InstantiateTask.transform.localPosition = new Vector3(taskDegreeX, 0, 0);
        //Debug.LogError(InstantiateTask.transform.localPosition.x);
        createObject.transform.rotation = new Quaternion(0, 0, 0, 0);
        //InstantiateTask.GetComponent<Image>().sprite = UnFinishedTaskSprite;
        return createObject;
    }
    public void SetObjectActive(GameObject obj,bool isActive)
    {
        obj.SetActive(isActive);
    }

}

  

posted @ 2019-03-20 11:49  WalkingSnail  阅读(591)  评论(0)    收藏  举报