2016-12-05 4 views
0

私はUnity 5を使用しています。キャンバス - はいボタン& NoButtonには2つのボタンがあります。両方のボタンに「ButtonScript.cs」というスクリプトを1つだけ追加しました。複数のボタンを1つにまとめたスクリプト5

私が必要 -

  1. をNoButtonに押しながらYesButton、Debug.Log("Yes");
  2. に押しながら、Debug.Log("No");

私は私のスクリプトで何を書くべきですか?

答えて

0

ありそれを行うために多くの方法があるが、私は主にこのいずれかを使用するようなOnClickイベントにパラメータを追加することができます...

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)はpainfullあり、 )など、 "キャンセル"

public enum ButtonType : byte { 
    YES = 0, 
    NO = (1 << 0) 
} 

// inside your button code 
[SerializeField] 
ButtonType _myType; 
public ButtonType Type { get { return _myType; } } 

EDIT:ユニティのイベントと

使用

// 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()); 
} 
あなたはこの

public void ClickLog(string theWord) 
{ 
    Debug.Log(theWord); 
} 

のようなものを持つことができ、あなたがのOnClickにこの方法を添付する場合 -

+0

MousePressイベントはボタンでどのように機能しますか? –

+0

私は、Unityのイベントシステムで動作する答えを編集しました。 –

0

これを行う最も簡単な方法は、あなたがあなたのButtonScript.csファイル内ので、OnClickを呼び出したいメソッドに渡されたパラメータを持っていますボタンを使用して、エディタを使用してメソッドに渡す内容を入力できます。 Buttonsはコードで作成されている場合には

- あなたがそう

//Button called newButton 
UnityEngine.Events.UnityAction action1 =() => { ButtonScript.ClickLog("Yes"/*or "No"*/); }; 
newButton.onClick.AddListener(action1); 
+0

IMO 'UnityAction 'のような一般的な形式の 'UnityAction'を使う方が簡単でしょう。 –

関連する問題