【发布时间】:2021-09-10 06:16:50
【问题描述】:
我正在使用 Unity 2020.3 并基本上制作了一个问答游戏。
假设我有这两个功能:
public void TrueAnswer()
{
Debug.Log("True !");
}
public void FalseAnswer()
{
Debug.Log("False !");
}
在每个问题中,真正答案的按钮都在变化(例如,在第 x 个问题中,答案在第一个按钮中,但在第 x+1 个问题中,答案在第三个按钮中)。所以,我应该在每个问题中更改答案按钮 onClick 事件。根据我的研究,有一些方法:
using UnityEngine.UI;
m_YourFirstButton.onClick.AddListener(TaskOnClick);
m_YourSecondButton.onClick.AddListener(delegate {TaskWithParameters("Hello"); });
m_YourThirdButton.onClick.AddListener(() => ButtonClicked(42));
m_YourThirdButton.onClick.AddListener(TaskOnClick);
(来自 Unity 文档,版本 2019.1)
using UnityEngine.UIElements;
button.GetComponent<Button>().clicked += ButtonClicked;
(这是我从 Unity 文档版本 2020.3 以及 VS 2019 IntelliSense 建议我使用“clicked”事件的理解。2020.3 也有 onClicked 事件,但它已过时)
首先,我使用第一种方法设置按钮 onClick 事件,但它不起作用。 然后,我阅读了文档并尝试了第二个解决方案,它也没有工作,但我得到一个错误:
ArgumentException: GetComponent requires that the requested component 'Button' derives from MonoBehaviour or Component or is an interface.
我明白错误是什么,但我很困惑。在 Unity 2019.1 之后,我在 Unity 文档中找不到 UnityEngine.UI 库,但如果我在脚本中使用它,我可以毫无错误地使用它。所以取决于我必须使用 UnityEngine.UIElements 库的文档,但如果我使用,我怎样才能让按钮派生自 MonoBehaviour 或其他?
【问题讨论】:
-
这是 Unity 文档版本 2020.3(按钮页面)的链接:docs.unity3d.com/2020.3/Documentation/ScriptReference/… Unity 文档版本 2019.1(按钮页面):docs.unity3d.com/2019.1/Documentation/ScriptReference/…