0
我現在正在做統一(ugui)gui,我想做很多按鈕和轉換。有沒有更平滑的方式來做到這一點比使用屏幕ID的過渡方法/使用int參數的少量onclick方法?我試圖做onClick方法基於枚舉,但它不可能將枚舉方法添加到ugui按鈕(嘗試整數,但它可能會混淆很多按鈕)。unity3d和很多按鈕 - 尋找一個平穩的方式來處理它
我現在正在做統一(ugui)gui,我想做很多按鈕和轉換。有沒有更平滑的方式來做到這一點比使用屏幕ID的過渡方法/使用int參數的少量onclick方法?我試圖做onClick方法基於枚舉,但它不可能將枚舉方法添加到ugui按鈕(嘗試整數,但它可能會混淆很多按鈕)。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();
}
}
我不知道如果我完全理解你的問題,但如果你不能用枚舉也許你可以使用普通字符串?例如「PlayButton」,「SettingsButton」等。 –
我知道它不是OOP –