Холст и текст
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 1 из 60.
Unity отображает экранный текст, кнопки и полосы с помощью своей системы UI. В Unity 6 пункт меню GameObject > UI > Text - TextMeshPro добавляет текстовый объект с именем Text (TMP); при первом добавлении Unity предлагает импортировать TMP Essentials, необходимые тексту для шрифта. Если в сцене ещё нет Canvas, Unity создаёт его и помещает текст внутрь, а также добавляет EventSystem, через который проходят нажатия на элементы UI. 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. Текст, который записывает скрипт, заменяет текст, введённый в поле Text Input в Inspector; для нового текстового объекта там указано New Text.
Задание
ЛегкоПокажи, в какой зоне находится исследователь, в ZoneText вверху.
- В
Explorer.csдобавьusing TMPro;и полеpublic TMP_Text zoneText;. Сцена связывает ZoneText с этим именем. - В
Update(), ниже комментария, присвойzoneText.textзначениеZone: Beach, покаtransform.position.xменьше2, а в противном случае —Zone: Jungle.
Нажми «Играть» и иди направо, на траву: текст изменится на Jungle. Затем нажми «Проверить».
Попробуйте сами
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
}
}
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банкеПотренируйтесь самостоятельно: Песочница Unity