2016-12-05 89 views
0

我使用的是Unity 5.在畫布中有2個按鈕 - YesButton & NoButton。我在兩個按鈕中僅添加了一個名爲「ButtonScript.cs」的腳本作爲組件。統一中的多個按鈕的一個腳本5

我需要 -

  1. 雖然YesButton壓制,Debug.Log("Yes");
  2. 按住在NoButton,Debug.Log("No");

我應該寫我的劇本?

回答

0

有很多辦法做到這一點,但我一直都用這一個...

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; 
} 
0

有很多方法可以解決這個問題。第一個是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()); 
} 
+0

MousePress事件如何在按鈕中工作? –

+0

我編輯了與Unity的事件系統一起工作的答案。 –

0

要做到這一點最簡單的方法是有傳遞到要呼叫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); 
+0

國際海事組織它會更容易只使用UnityAction的一般形式,如UnityAction 。 –

相關問題