我使用的是Unity 5.在畫布中有2個按鈕 - YesButton & NoButton。我在兩個按鈕中僅添加了一個名爲「ButtonScript.cs」的腳本作爲組件。統一中的多個按鈕的一個腳本5
我需要 -
- 雖然YesButton壓制,
Debug.Log("Yes");
- 按住在NoButton,
Debug.Log("No");
我應該寫我的劇本?
我使用的是Unity 5.在畫布中有2個按鈕 - YesButton & NoButton。我在兩個按鈕中僅添加了一個名爲「ButtonScript.cs」的腳本作爲組件。統一中的多個按鈕的一個腳本5
我需要 -
Debug.Log("Yes");
Debug.Log("No");
我應該寫我的劇本?
有很多辦法做到這一點,但我一直都用這一個...
public void buttonDownEvent(BaseEventData eventData){
if (eventData.selectedObject == null)
return;
string textCheck = eventData.selectedObject.name;
switch (textCheck) {
case "Yes":
Debug.Log(textCheck); // OutPut is YES;
break;
case "NO":
Debug.Log(textCheck); // OutPut is NO;
break;
default:
break;
}
有很多方法可以解決這個問題。第一個是taht你可以在標籤操作:
Debug.Log(gameObject.Tag == "YesButton" ? "Yes" : "No");
但(IMO)處理標籤是不好受,因此最簡單的方法是隻做出一些枚舉(像「是」,「否」未來的改善, 「取消」 等)
public enum ButtonType : byte {
YES = 0,
NO = (1 << 0)
}
// inside your button code
[SerializeField]
ButtonType _myType;
public ButtonType Type { get { return _myType; } }
編輯:
用法與團結的事件
// inside ButtonScript.Start() or ButtonScript.Awake()
this/* Button */.onClick.AddListener(new UnityEngine.Events.UnityAction(ButtonClicked));
// and now make a new method inside ButtonScript
void ButtonClicked()
{
// method with tags:
Debug.Log(gameObject.Tag == "YesButton" ? : "Yes" : "No");
// method with enumeration:
Debug.Log(_myType.ToString());
}
要做到這一點最簡單的方法是有傳遞到要呼叫OnClick
,所以在你的ButtonScript.cs
文件的方法一個參數 - 你可以有這樣的事情
public void ClickLog(string theWord)
{
Debug.Log(theWord);
}
當您將這種方法的OnClick
按鈕,您可以通過編輯器輸入想要傳入的方法。
在該Buttons
在代碼中創建的情況下 - 你可以將參數添加到OnClick
事件,像這樣
//Button called newButton
UnityEngine.Events.UnityAction action1 =() => { ButtonScript.ClickLog("Yes"/*or "No"*/); };
newButton.onClick.AddListener(action1);
國際海事組織它會更容易只使用UnityAction的一般形式,如UnityAction
MousePress事件如何在按鈕中工作? –
我編輯了與Unity的事件系統一起工作的答案。 –