在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 以使其统一易于理解 EventSystemButton 当然,将其附加到 . 但是,最好不要将其附加到完全不相关的对象上,因为它会引起混淆。

如果您查看添加的脚本,您可以看到显示“计数文本”项。 以这种方式发布字段后,您将能够在 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,并将数字设置为文本对象。

运行游戏并确保数字随着每次点击而增加。