숫자 형식 지정하기
Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 56개 중 3번째.
문자열에 숫자를 연결하면 C#이 출력하는 방식대로 표시됩니다. 타이머에는 12.34567이 표시되고, 2인 float에는 소수점 없이 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:04가 아니라 1:4로 표시됩니다. 또한 (int)는 반올림하는 대신 소수 부분을 버리므로, 59.7초는 0:59로 표시됩니다. 반올림하면 잠시 0:60으로 표시될 수 있습니다.
챌린지
쉬움아케이드의 Scoreboard.cs는 숫자를 가공하지 않고 그대로 표시합니다. 스페이스바를 누르면 콤보 배수만큼 100점을 얻고 콤보가 0.5 증가하며, playTime은 플레이한 시간을 초 단위로 셉니다(Inspector에서 시작값은 47.5입니다). 시간 계산은 그대로 두고, 세 텍스트의 표시 방식을 바꾸세요:
scoreText: 점수를 6자리로 표시합니다. 예:Score: 000450.comboText: 콤보를 소수점 한 자리까지 표시합니다. 예:Combo: x2.5. 시작 시에는Combo: x1.0으로 표시합니다.timeText: 분과 정수 초를 표시합니다. 예:Time: 2:07. 초는 항상 두 자리이며 올림하지 않습니다.
Play를 누르고 몇 번 점수를 얻은 다음 Check를 누르세요.
직접 해보기
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;
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.