美文网首页
Unity UGUI系列三 按钮 Button

Unity UGUI系列三 按钮 Button

作者: 合肥黑 | 来源:发表于2021-11-21 21:44 被阅读0次

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

一、Transition
image.png
1.Color Tint —— 颜色过渡
2.Sprite Swap —— 图片过渡
3.Animation —— 动画过渡
二、事件绑定

参考
Unity UGUI按钮添加点击事件

1.可视化绑定
image.png
image.png
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组件.在组件里添加对应的事件,选择对应的方法.


image.png
三、Navigation

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

image.png
点击Button的Visualize,就能在Scene视图中看到Navigation顺序。 image.png
  • None 无键盘导航。还可以确保单击/点击操作不会获得焦点。
  • Horizontal 水平导航。
  • Vertical 垂直导航。
  • Automatic 自动导航。
  • Explicit 在此模式下,可显式指定不同箭头键将控件导航到的位置。

相关文章

网友评论

      本文标题:Unity UGUI系列三 按钮 Button

      本文链接:https://www.haomeiwen.com/subject/ylivaltx.html