Unity UGUI按钮添加点击事件
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都可以).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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 : 运行,点击按钮执行两个方法.
1 2 3 4 5 | buttonObj.GetComponent<Button>().onClick.AddListener(M);可以换成 buttonObj.GetComponent<Button>().onClick.AddListener ( delegate () { M(); } ); |
3. 通过 EventTrigger 实现按钮点击事件(一) #
1 : 创建一个ButtonClickTest 脚本, 利用 UnityEngine.EventSystems.EventTrigger 添加监听事件.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 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 entry= new EventTrigger.Entry(); EventTrigger.Entry entry= new EventTrigger.Entry(); EventTrigger.Entry entry= 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).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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 :运行,鼠标在按钮上运动,点击.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!