unity3d和许多按钮-寻找一种平滑的方式来处理它
本文关键字:平滑 一种 方式 处理 按钮 许多 寻找 unity3d | 更新日期: 2023-09-27 18:27:43
我现在在Unity(ugui)中做gui,我想做很多按钮和转换。有没有比使用带有screenID的transition方法/new-onlick方法和int参数更流畅的方法呢?我尝试过基于enums的onClick方法,但不可能将enum方法添加到ugui按钮中(尝试过integer,但它可能会与许多按钮混淆)。
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();
}
}