Menu
CoddyTech

Холст и текст

Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 1 из 56.

Unity отображает экранный текст, кнопки и полосы с помощью своей системы интерфейса. В Unity 6 пункт GameObject > UI > Text - TextMeshPro добавляет текстовый объект с именем Text (TMP); при первом добавлении Unity предлагает импортировать TMP Essentials, которые нужны тексту для шрифта. Если в сцене ещё нет Canvas, Unity создаёт его и помещает текст внутрь, а также добавляет EventSystem, через который проходят щелчки по элементам интерфейса. Canvas отображает свои дочерние объекты поверх изображения с камеры в фиксированном месте экрана, куда бы ни смотрела камера. Установи для параметра Canvas Scaler значение Scale With Screen Size, 1920 x 1080 и Match 0.5, как это сделано в каждой сцене этого курса, и макет сохранит свои пропорции при любом размере экрана.

Компонент текста называется TextMeshPro - Text (UI). В скриптах его хранят в поле базового типа TMP_Text из пространства имён TMPro и изменяют отображаемое содержимое через его свойство text, имеющее тип string. Этот скрипт задаёт название уровня при запуске:

using UnityEngine;
using TMPro;

public class LevelIntro : MonoBehaviour
{
    public TMP_Text titleText;

    void Start()
    {
        titleText.text = "World 2: Ice Caves";
    }
}

Перетащи объект Text (TMP) из Hierarchy в слот Title Text в Inspector, и Unity поместит его текстовый компонент в поле. Без using TMPro; имя TMP_Text не распознаётся, и скрипт не компилируется (CS0246). Если оставить слот пустым, первое обращение к titleText.text вызовет UnassignedReferenceException. Текст, который записывает скрипт, заменяет введённый в Inspector текст Text Input; для нового текстового объекта это New Text.

challenge icon

Задание

Легко

Исследователь ходит по острову с помощью стрелок влево и вправо, как это уже делает Explorer.cs. Показывай, где он находится, в ZoneText в верхней части экрана, где по-прежнему отображается «Новый текст:»:

  • Добавь using TMPro; и публичное поле TMP_Text с именем zoneText. В сцене ZoneText привязан к полю с таким точным именем.
  • Каждый кадр отображай текст Zone: Beach, пока координата x исследователя меньше 2, и Zone: Jungle, начиная с 2.

Нажми Play, пройдись по траве и обратно, затем нажми Check.

Попробуйте сами

using UnityEngine;

public class Explorer : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        float move = Input.GetAxisRaw("Horizontal");
        transform.Translate(move * speed * Time.deltaTime, 0f, 0f);

        // Показывай зону в ZoneText: Zone: Beach при x < 2, Zone: Jungle при x ≥ 2
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Создание настоящих игр