ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unity UGUI按钮添加点击事件

2022-01-25 21:00:27  阅读:209  来源: 互联网

标签:EventTrigger UnityEngine 鼠标 void Unity 按钮 using UGUI public


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 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).

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 :运行,鼠标在按钮上运动,点击.

标签:EventTrigger,UnityEngine,鼠标,void,Unity,按钮,using,UGUI,public
来源: https://www.cnblogs.com/guangzhiruijie/p/15844454.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有