Ugui:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
/// <summary>
/// 脚本位置:UGUI的按钮身上
/// 脚本功能:动态的添加按钮的点击事件
/// </summary>
public class ListenerTest : MonoBehaviour {
private Button button ;
void Start () {
button = GetComponent<Button>();
button.onClick.AddListener(
delegate() {
TestButtonClick testClick = GameObject.FindObjectOfType<TestButtonClick>();
testClick.OnClickButton();
}
);
}
}
<pre name="code" class="csharp">using UnityEngine;
using System.Collections;
/// <summary>
/// 脚本位置:摄像机身上
/// 脚本功能:当点击按钮的时候动态的添加此脚本上的OnClickButton方法
/// </summary>
public class TestButtonClick : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void OnClickButton()
{
Debug.Log("已经成功监听按钮的点击事件");
}
}
NGUI:
using UnityEngine;
using System.Collections;
/// <summary>
/// 脚本位置:NGUI的Button身上
/// 脚本功能:监听事件的添加和取消
/// 创建时间:2015年11月18日
/// </summary>
public class Listener : MonoBehaviour
{
// Use this for initialization
void Start ()
{
// 给Button按钮添加监听事件
EventDelegate.Add (GetComponent<UIButton> ().onClick, AddOnClick);
}
// Update is called once per frame
void Update ()
{
}
public void AddOnClick ()
{
Debug.Log ("按钮的监听事件添加成功");
}
// 取消NGUI按钮的监听事件
public void CancelOnClick ()
{
EventDelegate.Remove (GetComponent<UIButton> ().onClick, AddOnClick);
}
}