• Unity 丨 插入按钮点击事件


    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 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 }

     2 : 运行,点击按钮执行两个方法.

    buttonObj.GetComponent<Button>().onClick.AddListener(M);可以换成
    
    buttonObj.GetComponent<Button>().onClick.AddListener

         (
              delegate () { M(); }
         );

     

    3. 通过 EventTrigger 实现按钮点击事件(一) #

    1 : 创建一个ButtonClickTest 脚本, 利用 UnityEngine.EventSystems.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 }

     2 :把脚本挂在Button对象上,然后Unity会给Button游戏对象再挂一个EventTrigger脚本.

     3 :运行.

    4. 通过 EventTrigger 实现按钮点击事件(二) #

     1 :写一个脚本挂在一个游戏对象,例如相机上(和按钮关联的事件方法要声明为public).

    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 }

     2 :给Button游戏对象添加EventTrigger组件.

     3 :在组件里添加对应的事件,选择对应的方法.

     4 :运行,鼠标在按钮上运动,点击.

  • 相关阅读:
    stat函数讲解
    ptrace 人人小站
    调试器工作原理——基础篇
    open和fopen的区别:
    memset ,memcpy 和strcpy 的根本区别?
    log4j日志配置详解
    jvm调优的参数设置
    mysql的密码设置
    java基础类、接口、成员属性的修饰符
    java基础之类(包含内部类)与接口的特点
  • 原文地址:https://www.cnblogs.com/TongGeGe/p/16182782.html
Copyright © 2020-2023  润新知