我不确定如何测试 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");
}
}
}
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
。