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