Использование кнопок в пользовательском интерфейсе Unity

Страница обновлена :
Дата создания страницы :

Проверочная среда

Виндоус
  • Windows 11
Редактор Unity
  • 2020.3.25ф1

Необходимые условия для получения этого совета

Следующие настройки были сделаны заранее в качестве предварительного условия для объяснения этих советов.

Сначала

Кнопка может использоваться как объект, который пользователь нажимает самостоятельно, или может быть использована для выбора, например «да» или «нет». Если вы хотите немного углубиться в детали, вы можете использовать кнопку в качестве объекта для выбора элемента списка, например меню.

В дополнение к этому, его также можно использовать в целях отладки и при нажатии кнопки для произвольного изменения состояния.

Нажмите кнопку, чтобы изменить текст

Если вы просто нажмете кнопку, вы выполните некоторую обработку. На этот раз каждый раз, когда вы нажимаете кнопку, текстовое число будет увеличиваться на 1.

Размещение и настройка пользовательского интерфейса

Добавьте в представление текст и кнопки из иерархии.

Вы можете разместить его где угодно, если вы положите его в такое место, где вы можете его видеть. Так как в начальном состоянии его сложно увидеть, задаются такие настройки, как «белый цвет текста», «изменить размер», «увеличить размер шрифта» и т.д. Содержимое текста будет автоматически изменено позже, поэтому вы можете оставить его как «Новый текст».

Настройка символов кнопки делится на «Кнопка» и «Текст», поэтому выберите «Текст» и установите его.

Добавление скриптов

Выберите папку Scenes в проекте, щелкните правой кнопкой мыши пустое место и выберите C# Script, чтобы добавить его. Изначально лучше создать скрипт в отдельной папке, но я опущу его с целью проверки работы.

Имя файла должно быть понятным. Введите как можно больше буквенно-цифровых символов. 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 Появится inspector, поэтому перетащите только что созданный скрипт C# в область «Добавить компонент» ниже. Теперь скрипт готов к работе.

На самом деле, этот скрипт может быть прикреплен к любому объекту, и Button он должен быть прикреплен к объекту. В этом совете мы добавим, чтобы сделать его единообразно простым для понимания EventSystem . Button Конечно, нет никаких проблем с тем, чтобы присоединить его к . Однако лучше не прикреплять его к совершенно не связанному объекту, так как это вызовет путаницу.

Если вы посмотрите на добавленный вами скрипт, то увидите, что отображается пункт «Подсчитать текст». После того, как вы опубликовали поле таким образом, вы сможете установить значение из редактора Unity. Мы хотим получить доступ к текстовому объекту при нажатии кнопки, поэтому перетащите его из иерархии Text на Count Text . Это позволит вам получить к нему доступ из вашего скрипта в любое время.

Затем выберите из иерархии Button и нажмите + в разделе «По щелчку» в инспекторе Button .

Затем будет добавлен один элемент.

В правом нижнем углу я перетащил скрипт, прикрепленный из иерархии 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 каждый раз, когда вы щелкаете и устанавливаете число для текстового объекта.

Запустите игру и убедитесь, что число увеличивается с каждым кликом.