unity3d和许多按钮-寻找一种平滑的方式来处理它

本文关键字:平滑 一种 方式 处理 按钮 许多 寻找 unity3d | 更新日期: 2023-09-27 18:27:43

我现在在Unity(ugui)中做gui,我想做很多按钮和转换。有没有比使用带有screenID的transition方法/new-onlick方法和int参数更流畅的方法呢?我尝试过基于enums的onClick方法,但不可能将enum方法添加到ugui按钮中(尝试过integer,但它可能会与许多按钮混淆)。

unity3d和许多按钮-寻找一种平滑的方式来处理它

Nika Kasradze:把基于字符串的方法放在检查器中不是一个好主意。稍后您需要在onClick方法中写入相同的字符串,而写入两个相同的字符串不是一个好主意。

我使用了自定义按钮功能。您只需将它添加到按钮中,它就会调用UI管理器中名为"onButtonClick"的函数,并将按钮名称作为参数传递。然后您有onButtonClick方法,在该方法中使用按钮名称设置所有按钮。您可以使用多个具有相同名称的按钮来调用一个函数,也可以使用唯一名称来调用唯一函数。onButtonClick方法真的很容易阅读,你不必在检查器中设置每个按钮!!!

using UnityEngine;
using UnityEngine.UI;
{
    [RequireComponent (typeof(Button))]
    public class CustomButton : MonoBehaviour
    {
        void Awake ()
        {
            Button btn = GetComponent<Button> ();
            btn.onClick.AddListener (() => ManagerUI.Instance.onButtonClick (gameObject.name));
        }
    }
}

你在ManagerUI 中放了这样的东西

void onButtonClick(string buttonName){
switch(buttonName){
case "back_btn": GoBack();
case "openshop_btn": OpenShop();
case "closepopup_btn": ClosePopup();
}
}