Використання кнопок в інтерфейсі Unity UI

Сторінка оновлюється :
Дата створення сторінки :

Середовище верифікації

Вікна
  • Вікна 11
Редактор Unity
  • 2020.3.25f1

Передумови для цієї поради

Наступні налаштування були зроблені заздалегідь як обов'язкова умова для пояснення цих порад.

Спочатку

Кнопка може використовуватися як об'єкт, який користувач натискає самостійно, або вона може бути використана для вибору, наприклад, «так» або «ні». Якщо ви хочете бути трохи складнішими, ви можете використовувати кнопку як об'єкт для вибору елемента списку, наприклад меню.

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

Натисніть кнопку, щоб змінити текст

Якщо ви просто натиснете кнопку, ви зробите певну обробку. Цього разу при кожному натисканні кнопки номер тексту буде збільшуватися на 1.

Розміщення та налаштування інтерфейсу користувача

Додайте текст і кнопки з ієрархії до подання.

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

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

Додавання скриптів

Виберіть папку «Сцени» у своєму проекті, клацніть правою кнопкою миші на порожньому місці та виберіть 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 Editor. CountText Тут ми визначаємо текстовий об'єкт під назвою Для того, щоб він відображався, його public потрібно опублікувати з . SerializeField Однак, якщо ви додасте атрибут, ви public зможете відобразити його в редакторі зі спеціальними можливостями, відмінними від . Це кращий опис, якщо ви не хочете отримувати доступ до нього з інших класів, наскільки це можливо, окрім як з метою налаштування його в редакторі.

OnClick Наведено методи, що описують, що робити при натисканні кнопки. public Це має бути визначено в .

Прикріплення з редактора Unity

Поверніться до редактора Unity і виберіть з ієрархії EventSystem .

EventSystem з'явиться інспектор, тому перетягніть щойно створений скрипт C# в область «Додати компонент» нижче. Тепер сценарій готовий до роботи.

По суті, цей скрипт можна прикріпити до будь-якого об'єкту, і Button він повинен бути прикріплений до об'єкта. У цій підказці ми додамо, щоб зробити її рівномірно легкою для розуміння EventSystem . Button Звичайно, немає проблем з тим, щоб прикріпити його до . Однак краще не прив'язувати його до абсолютно не пов'язаного з ним об'єкта, так як це викличе плутанину.

Якщо ви подивитеся на доданий вами скрипт, то побачите, що відображається пункт «Count Text». Після того, як ви опублікуєте поле таким чином, ви зможете встановити значення з редактора Unity. Ми хочемо отримати доступ до текстового об'єкта, коли натискаємо кнопку, тому перетягніть його з ієрархії Text та Count Text скиньте його на . Це дозволить вам отримати доступ до нього зі свого скрипта в будь-який час.

Далі виберіть з ієрархії Button та натисніть + у розділі «При клацанні» в інспекторі Button .

Потім додасться один елемент.

У нижньому правому пункті я викинув скрипт, прикріплений з EventSystem ієрархії. Так як нам потрібно помістити сюди об'єкт, до якого прикріплений скрипт, Якщо ви прикріплюєте скрипт до кнопки, вам потрібно включити кнопку.

Якщо ви натиснете «Немає функції», відобразиться прикріплений скрипт, тому 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 щоразу, коли ви клацаєте та встановлюєте число для текстового об'єкта.

Запустіть гру і стежте за тим, щоб число збільшувалося з кожним клацанням.