统一的多个按钮的一个脚本5

时间:2016-12-05 10:30:33

标签: c# unity5 unityscript

我正在使用Unity 5.画布中有2个按钮 - YesButton& NoButton。我只添加了一个名为" ButtonScript.cs"在两个按钮中作为组件。

我需要 -

  1. 按下YesButton,Debug.Log("Yes");
  2. 按下NoButton,Debug.Log("No");
  3. 我应该在脚本中写什么?

3 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题。首先,你可以对标签进行操作:

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

修改

使用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());
}

答案 1 :(得分: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);

答案 2 :(得分: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;
 }