Unity中有很多Button需要监听时,怎么处理更方便

Unity中有很多Button需要监听时,怎么处理更方便

  • 逻辑

逻辑

将该脚本挂载到场景中的空物体上,并将要监听的诸多按钮挂载到列表下
其中“Btn1”、“Brn2”、“Btn3”、“Btn4”为场景中按钮的名字,这个脚本是通过foreach循环监听列表下所有按钮,然后通过点击来获取当前点击按钮.name,再通过name判断要执行的相应方法。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ClickBtn : MonoBehaviour 
{
    public List<Button> buttons = new List<Button>();
    void Start()
    {
        AddClickEvents();
    }

    void AddClickEvents()
    {
        int x = 0;
        foreach (Button item in buttons)
        {
            int y = x;//不能直接使用X,需要Y转一下
            item.onClick.AddListener(() => ClickEvent2(y));
            x++;
        }
    }

    //第一种点击方法
    void ClickEvent1()
    {
        //通过 UnityEngine.EventSystems的底层来获取到当前点击的对象
        var button = UnityEngine.EventSystems.EventSystem.current.currentSelectedGameObject;
        Debug.Log(button.name);
    }
    //第二种点击方法
    void ClickEvent2(int a)
    {
        Debug.Log(buttons[a].name);
        switch (buttons[a].name)
        {
            case "Btn1":
                ClickBtn1();
                break;
            case "Btn2":
                ClickBtn2();
                break;
            case "Btn3":
                ClickBtn3();
                break;
            case "Btn4":
                ClickBtn4();
                break;
            default:
                break;
        }
    }

    void ClickBtn1()
    {
        //ToDo
        Debug.Log("点击Btn1");
    }
    void ClickBtn2()
    {
        //ToDo
        Debug.Log("点击Btn2");
    }
    void ClickBtn3()
    {
        //ToDo
        Debug.Log("点击Btn3");
    }
    void ClickBtn4()
    {
        //ToDo
        Debug.Log("点击Btn4");
    }

}

Unity中有很多Button需要监听时,怎么处理更方便_第1张图片

Unity中有很多Button需要监听时,怎么处理更方便_第2张图片

你可能感兴趣的:(Unity)