unity如何检测按钮是否被点击?

问题描述 投票:0回答:2

我不确定如何测试 Unity 19.4 中是否单击了按钮。这是我测试的代码,有人知道如何在更新方法中测试内容吗?

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

public class Controller : MonoBehaviour
{

[Header("Button Objects")]
    public Button buttonOne;

void Update()
    {
        if (buttonOne.clicked == true)
        {

            Debug.Log("It worked :D");

        }
    }
}
c# unity-game-engine
2个回答
5
投票

按钮通过向其

onclick
的事件添加侦听器来工作。这些侦听器可以是持久侦听器或运行时侦听器。持久侦听器在编辑器中分配,运行时侦听器在运行时在代码中分配。以下是如何在代码中分配新侦听器。

public class Controller : MonoBehaviour
{
    [SerializeField] private Button btn = null;

    private void Awake()
    {
        // adding a delegate with no parameters
        btn.onClick.AddListener(NoParamaterOnclick);
           
        // adding a delegate with parameters
        btn.onClick.AddListener(delegate{ParameterOnClick("Button was pressed!");});
    }
    
    private void NoParamaterOnclick()
    {
        Debug.Log("Button clicked with no parameters");
    }
    
    private void ParameterOnClick(string test)
    {
        Debug.Log(test);
    }
}

在上面的示例中,我添加了两个侦听器。我不确定您要调用的函数是否有参数,因此请确保仅添加一个回调,除非您希望在单击按钮时调用多个函数。

Update
是每帧都会调用的方法。仅将经常不断检查或更新的逻辑放在这里。按钮只应在单击后做出反应,这就是它具有
onclick
的原因。 Unity 已经在内部使用
EventSystem
和一系列
GraphicalRaycasts
检查按钮是否被单击。

我问过您使用的是哪个版本的 Unity,因为在较新的版本中,有一个名为

UI Builder
的新 UI 流程,其中包含添加 onclick 事件的
completely different method


0
投票

如果您想从 Unity 编辑器中执行此操作:

© www.soinside.com 2019 - 2024. All rights reserved.