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

时间:2015-12-22 01:28:07

标签: c# user-interface unity3d

我现在正在Unity(ugui)做gui,我想制作很多按钮和过渡。有没有比使用屏幕ID的转换方法/使用int参数的几个onclick方法更顺畅的方法?我尝试在枚举基础上做onClick方法但是不可能将enum方法添加到ugui按钮(尝试过整数,但它可能会让很多按钮混淆)。

1 个答案:

答案 0 :(得分:0)

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();
}
}