1. 可视化创建及事件绑定 #
1 : 通过 Hierarchy 面板创建 UI > Button
.
2 : 创建一个脚本 TestClick.cs, 定义了一个 Click 的 public 方法(一定要是public的方法).
3 : 把 脚本 TestClick.cs 挂到一个游戏对象或者Button本身上.
4 : 把挂脚本的游戏对象拖到图中Button的画红圈的位置.
5 : 点击图中Button的画蓝圈的位置,选择TestClick脚本,选择Click方法.
运行,点击按钮.
2. 通过直接绑定脚本来绑定事件 #
1 : 建一个ButtonClickTest脚本,挂在一个游戏对象上(里面的方法public或private都可以).
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class ButtonClickTest : MonoBehaviour { private GameObject buttonObj;
private void Start()
{
buttonObj = GameObject.Find("Button");
buttonObj.GetComponent<Button>().onClick.AddListener(M);
buttonObj.GetComponent<Button>().onClick.AddListener(F);
}
void M()
{
print("执行了M方法!");
}
public void F()
{
print("执行了N方法!");
}
}
2 : 运行,点击按钮执行两个方法.
buttonObj.GetComponent<Button>().onClick.AddListener(M);可以换成
buttonObj.GetComponent<Button>().onClick.AddListener
(
delegate () { M(); }
);
3. 通过 EventTrigger 实现按钮点击事件(一) #
1 : 创建一个ButtonClickTest 脚本, 利用 UnityEngine.EventSystems.EventTrigger 添加监听事件.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems; // 有了此脚本,就会自动添加 EventTrigger 脚本
[RequireComponent(typeof(UnityEngine.EventSystems.EventTrigger))]
public class ButtonClickTest : MonoBehaviour
{ // Use this for initialization
void Start()
{
Button btn = this.GetComponent<Button>();
EventTrigger trigger = btn.gameObject.GetComponent<EventTrigger>();
EventTrigger.Entry entry1 = new EventTrigger.Entry();
EventTrigger.Entry entry2 = new EventTrigger.Entry();
EventTrigger.Entry entry3 = new EventTrigger.Entry(); // 鼠标点击事件
entry1.eventID = EventTriggerType.PointerClick;
// 鼠标进入事件
entry2.eventID = EventTriggerType.PointerEnter;
// 鼠标滑出事件
entry3.eventID = EventTriggerType.PointerExit; entry1.callback = new EventTrigger.TriggerEvent();
entry1.callback.AddListener(M);
trigger.triggers.Add(entry1); entry2.callback = new EventTrigger.TriggerEvent();
entry2.callback.AddListener(N);
trigger.triggers.Add(entry2); entry3.callback = new EventTrigger.TriggerEvent();
entry3.callback.AddListener(F);
trigger.triggers.Add(entry3); }
private void M(BaseEventData pointData)
{
Debug.Log("鼠标点击了!");
}
private void N(BaseEventData pointData)
{
Debug.Log("鼠标进入了!");
}
private void F(BaseEventData pointData)
{
Debug.Log("鼠标滑出了!");
}
}
2 :把脚本挂在Button对象上,然后Unity会给Button游戏对象再挂一个EventTrigger脚本.
3 :运行.
4. 通过 EventTrigger 实现按钮点击事件(二) #
1 :写一个脚本挂在一个游戏对象,例如相机上(和按钮关联的事件方法要声明为public).
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems; public class ButtonClickTest : MonoBehaviour
{
// Use this for initialization
void Start()
{
}
public void M()
{
Debug.Log("鼠标点击了!");
}
public void N()
{
Debug.Log("鼠标进入了!");
}
public void F()
{
Debug.Log("鼠标滑出了!");
}
public void K()
{
Debug.Log("鼠标按下了!");
}
public void L()
{
Debug.Log("鼠标抬起了!");
}
}
2 :给Button游戏对象添加EventTrigger组件.
3 :在组件里添加对应的事件,选择对应的方法.
4 :运行,鼠标在按钮上运动,点击.
.