Покажем счёт
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 2 из 60.
text у текста — это строка, поэтому число нужно преобразовать в текст, прежде чем его показать. Для этого достаточно присоединить его к строке с помощью +: "Wood: " + wood — это Wood: 12, когда wood равно 12, а wood.ToString() — это 12. Отдельное значение типа int не подходит: woodText.text = wood; завершается ошибкой CS0029: Cannot implicitly convert type 'int' to 'string'.
Число хранится в поле типа int, а текст только отображает его. Один метод обновляет текст на основе значения поля; каждый раз при изменении числа вызывается этот метод, как и из Start(), чтобы в первом кадре отображалось настоящее значение, а не введённое в Inspector. Здесь нажатие Space рубит 3 бревна:
public TMP_Text woodText;
private int wood;
void Start()
{
ShowWood();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
wood += 3;
ShowWood();
}
}
void ShowWood()
{
woodText.text = "Wood: " + wood;
}Текст меняется только тогда, когда меняется wood. Обновление текста при каждом вызове Update() выглядело бы так же, но без необходимости создавало бы новую строку 60 раз в секунду. Порядок важен: если вызвать ShowWood() до wood += 3, на экране будет старое количество — на одно нажатие меньше.
Задание
ЛегкоПокажи на экране количество семян и деревьев у садовника.
- В
Gardener.csнапишиvoid ShowCounts(), которая присваиваетseedsText.textзначение"Seeds: " + seeds, аtreesText.text— значение"Trees: " + trees. - Вызови её в новом методе
Start(), а также вifпосадки послеtrees++;.
Нажми «Играть»: на экране появятся значения Seeds: 5 и Trees: 0, которые будут меняться с каждым посаженным саженцем. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
using TMPro;
public class Gardener : MonoBehaviour
{
public float speed = 4f;
public int seeds = 10;
public GameObject saplingPrefab;
public TMP_Text seedsText;
public TMP_Text treesText;
private int trees;
void Update()
{
float move = Input.GetAxisRaw("Horizontal");
transform.Translate(move * speed * Time.deltaTime, 0f, 0f);
if (Input.GetKeyDown(KeyCode.Space) && seeds > 0)
{
Vector3 spot = new Vector3(transform.position.x, 0.5f, 1.5f);
Instantiate(saplingPrefab, spot, Quaternion.identity);
seeds--;
trees++;
}
}
// Показывай Seeds: и Trees: в двух текстовых полях, начиная с первого кадра
}
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банкеПотренируйтесь самостоятельно: Песочница Unity