Форматирование чисел
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 3 из 60.
Число, соединённое со строкой, отображается так, как его записывает C#: таймер показывает 12.34567, а значение float, равное 2, отображается как 2, вообще без десятичных знаков. За внешний вид отвечает строка формата в ToString(). Каждый 0 в ней обозначает цифру, которая всегда выводится: 7.ToString("000") — это 007, а 41.27f.ToString("0.0") — 41.3, округлённое до одного знака после запятой. При интерполяции строк тот же формат указывается после двоеточия: $"{coins:000}", $"{topSpeed:0.0} m/s".
Время удобнее читать в формате минут и секунд. Сначала преобразуй время к типу int, чтобы отбросить дробную часть; затем целочисленное деление на 60 даст полное количество минут, а % 60 — оставшиеся секунды. Время круга — 83.46 секунды:
float lapTime = 83.46f;
int total = (int)lapTime; // 83
int minutes = total / 60; // 1
int seconds = total % 60; // 23
lapText.text = $"Lap: {minutes}:{seconds:00}"; // Lap: 1:2300 оставляет две цифры: без него время круга в 64 секунды отображалось бы как 1:4, а не 1:04. А поскольку (int) отбрасывает дробную часть, а не округляет, 59.7 секунды отображаются как 0:59; при округлении на мгновение получилось бы 0:60.
Задание
ЛегкоОтформатируй три числа в аркадной игре.
- В
Update()сначала добавьint seconds = (int)playTime;. - Выведи счёт шестью цифрами,
Score: 000450, с помощью{score:000000}, а комбо — с одним десятичным знаком,Combo: x2.5, с помощью{combo:0.0}. - Выведи время в формате
Time: 2:07:seconds / 60, двоеточие, а затемseconds % 60двумя цифрами.
Нажми «Играть» и нажми пробел: счёт останется шестизначным. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
using TMPro;
public class Scoreboard : MonoBehaviour
{
public TMP_Text scoreText;
public TMP_Text comboText;
public TMP_Text timeText;
public int score;
public float combo = 1f;
public float playTime;
void Update()
{
playTime += Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Space))
{
score += (int)(100 * combo);
combo += 0.5f;
}
scoreText.text = "Score: " + score;
comboText.text = "Combo: x" + combo;
timeText.text = "Time: " + playTime;
}
}
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банкеПотренируйтесь самостоятельно: Песочница Unity