2016-12-05 4 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; } } 

EDIT:

Использование с событием Unity в

// 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 '. –

Смежные вопросы