参考【Unity3D-UGUI系列】(三)Button 按钮组件详解
一、Transition

1.Color Tint —— 颜色过渡
2.Sprite Swap —— 图片过渡
3.Animation —— 动画过渡
二、事件绑定
1.可视化绑定


2.直接绑定脚本来绑定事件
使用AddListener添加的方法,不能有返回值
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 using UnityEngine.UI;
5
6 public class ButtonClickTest : MonoBehaviour {
7
8 private GameObject buttonObj;
9 private void Start()
10 {
11 buttonObj = GameObject.Find("Button");
12 buttonObj.GetComponent<Button>().onClick.AddListener(M);
13 buttonObj.GetComponent<Button>().onClick.AddListener(F);
14 }
15 void M()
16 {
17 print("执行了M方法!");
18 }
19 public void F()
20 {
21 print("执行了N方法!");
22 }
23 }
buttonObj.GetComponent<Button>().onClick.AddListener(M);
可以换成
buttonObj.GetComponent<Button>().onClick.AddListener
(
delegate () { M(); }
);
3.通过 EventTrigger 实现按钮点击事件(一)
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 using UnityEngine.UI;
5 using UnityEngine.EventSystems;
6
7 // 有了此脚本,就会自动添加 EventTrigger 脚本
8 [RequireComponent(typeof(UnityEngine.EventSystems.EventTrigger))]
9 public class ButtonClickTest : MonoBehaviour
10 {
11
12 // Use this for initialization
13 void Start()
14 {
15 Button btn = this.GetComponent<Button>();
16 EventTrigger trigger = btn.gameObject.GetComponent<EventTrigger>();
17 EventTrigger.Entry entry1 = new EventTrigger.Entry();
18 EventTrigger.Entry entry2 = new EventTrigger.Entry();
19 EventTrigger.Entry entry3 = new EventTrigger.Entry();
20
21 // 鼠标点击事件
22 entry1.eventID = EventTriggerType.PointerClick;
23 // 鼠标进入事件
24 entry2.eventID = EventTriggerType.PointerEnter;
25 // 鼠标滑出事件
26 entry3.eventID = EventTriggerType.PointerExit;
27
28 entry1.callback = new EventTrigger.TriggerEvent();
29 entry1.callback.AddListener(M);
30 trigger.triggers.Add(entry1);
31
32 entry2.callback = new EventTrigger.TriggerEvent();
33 entry2.callback.AddListener(N);
34 trigger.triggers.Add(entry2);
35
36 entry3.callback = new EventTrigger.TriggerEvent();
37 entry3.callback.AddListener(F);
38 trigger.triggers.Add(entry3);
39
40 }
41 private void M(BaseEventData pointData)
42 {
43 Debug.Log("鼠标点击了!");
44 }
45 private void N(BaseEventData pointData)
46 {
47 Debug.Log("鼠标进入了!");
48 }
49 private void F(BaseEventData pointData)
50 {
51 Debug.Log("鼠标滑出了!");
52 }
53 }
4.通过 EventTrigger 实现按钮点击事件(二)
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 using UnityEngine.UI;
5 using UnityEngine.EventSystems;
6
7 public class ButtonClickTest : MonoBehaviour
8 {
9 // Use this for initialization
10 void Start()
11 {
12 }
13 public void M()
14 {
15 Debug.Log("鼠标点击了!");
16 }
17 public void N()
18 {
19 Debug.Log("鼠标进入了!");
20 }
21 public void F()
22 {
23 Debug.Log("鼠标滑出了!");
24 }
25 public void K()
26 {
27 Debug.Log("鼠标按下了!");
28 }
29 public void L()
30 {
31 Debug.Log("鼠标抬起了!");
32 }
33 }
给Button游戏对象添加EventTrigger组件.在组件里添加对应的事件,选择对应的方法.

三、Navigation
https://docs.unity.cn/cn/2019.4/Manual/script-SelectableNavigation.html

点击Button的Visualize,就能在Scene视图中看到Navigation顺序。

- None 无键盘导航。还可以确保单击/点击操作不会获得焦点。
- Horizontal 水平导航。
- Vertical 垂直导航。
- Automatic 自动导航。
- Explicit 在此模式下,可显式指定不同箭头键将控件导航到的位置。
网友评论