在Unity UI中使用按钮
验证环境
- 窗户
-
- 窗户11
- Unity 编辑器
-
- 2020.3.25f1
此提示的先决条件
作为解释这些提示的先决条件,已预先进行了以下设置。
起先
按钮可以用作用户自行单击的对象,也可以用于做出选择,例如“是”或“否”。 如果想要更详细一点,可以使用按钮作为对象来选择列表项,例如菜单。
除此之外,它还可用于调试目的以及单击按钮以任意更改状态时。
单击按钮以更改文本
如果您只需单击该按钮,您将进行一些处理。 这一次,每次单击按钮时,文本编号都会增加 1。
UI放置和配置
将层次结构中的文本和按钮添加到视图中。
你可以把它放在任何地方,只要你把它放在一个你可以看到它的地方。 由于在初始状态下很难看到,因此设置了“白色文本颜色”、“更改大小”、“增加字体大小”等设置。 文本的内容稍后会自动更改,因此您可以将其保留为“新文本”。
按钮的字符设置分为“按钮”和“文本”,因此请选择文本并设置它。
添加脚本
从项目中选择“场景”文件夹,右键单击空白区域,然后选择“C# 脚本”进行添加。 最初,最好在单独的文件夹中创建脚本,但为了检查操作,我将省略它。
文件名应该易于理解。 输入尽可能多的字母数字字符。
ButtonClick
在本例中,它设置为 。
创建后,双击 C# 脚本以打开脚本编辑器。 如果脚本编辑器是 Visual Studio,则应看到如下所示的内容:
Start
,这次不需要该方法,因此将其删除, Update
重写并保存如下。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // 追加
public class ButtonClick : MonoBehaviour
{
<summary>カウントアップするテキストオブジェクト。</summary>
[SerializeField] Text CountText;
public void OnClick()
{
}
}
C# 的语法不是本技巧的主题,因此我不会解释它。 请自学。 仅讨论特定于 Unity 的描述。
MonoBehaviour
在继承自的类中编写的字段将能够在 Unity 编辑器中设置。
CountText
在这里,我们定义一个名为
为了显示它,必须 public
使用 .
SerializeField
但是,如果添加该属性,您将能够在编辑器中显示该属性, public
并具有除 .
如果您不想尽可能多地从其他类访问它,而不是为了在编辑器中设置它,这是一个更好的描述。
OnClick
提供了一些方法来描述单击按钮时要执行的操作。
public
这必须在 中定义。
从 Unity 编辑器附加
返回到 Unity 编辑器,然后从层次结构 EventSystem
中进行选择。
EventSystem
检查器将出现,因此请将您刚刚创建的 C# 脚本放在下面的“添加组件”区域中。
该脚本现在可以工作了。
实际上,此脚本可以附加到任何对象,并且 Button
应该附加到对象。
在这个技巧中,我们将添加 to 以使其统一易于理解 EventSystem
。
Button
当然,将其附加到 . 但是,最好不要将其附加到完全不相关的对象上,因为它会引起混淆。
如果您查看添加的脚本,您可以看到显示“计数文本”项。
以这种方式发布字段后,您将能够在 Unity 编辑器中设置值。
我们希望在单击按钮时访问文本对象,因此从层次结构 Text
中拖动并将其 Count Text
放在 .
这将允许您随时从脚本中访问它。
接下来,从层次结构 Button
中进行选择,然后单击 Inspector Button
中 On Click 下的 +。
然后将添加一个项目。
在右下角的项中,我删除了从 EventSystem
层次结构附加的脚本。
由于我们需要将脚本附加到的对象放在这里,
如果要将脚本附加到 Button,则需要包含 Button。
如果单击“无功能”,将显示附加的脚本,因此 ButtonClick
请选择 。
选择您在其中创建 OnClick
的方法。
现在,当您单击该按钮时,将调用该 OnClick
方法。
单击按钮即可输出日志
我将输出日志以确认它是否有效。 只需写一行就可以检查它是否有效,这对以后的调试非常有用,所以最好记住它。
ButtonClick
打开脚本并将 OnClick
以下内容添加到 。
public void OnClick()
{
// コンソール ログを出力
Debug.Log("ボタンが押されました!");
}
输入并保存后,运行游戏并单击按钮。
每次单击它时,控制台选项卡中都会显示一条消息。 现在你可以看到它正在工作。
通过单击按钮更改文本
现在您可以移动按钮,此提示的目的已经实现。 现在我已经放置了文本对象,我想在每次单击按钮时更改文本。
按如下方式重写脚本。
// 省略
public class ButtonClick : MonoBehaviour
{
<summary>カウントアップするテキストオブジェクト。</summary>
[SerializeField] Text CountText;
<summary>クリックカウント。</summary>
private int _counter = 0;
public void OnClick()
{
// コンソール ログを出力
Debug.Log("ボタンが押されました!");
// カウントを増やす
_counter++;
// カウントした数を表示する
CountText.text = _counter.ToString();
}
}
内容只是在每次单击时将计数增加 1,并将数字设置为文本对象。
运行游戏并确保数字随着每次点击而增加。