숫자 형식 지정하기
Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 60개 중 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으로 표시될 수 있습니다.
챌린지
쉬움아케이드의 세 숫자를 형식에 맞게 표시하세요.
Update()에서 먼저int seconds = (int)playTime;를 추가하세요.{score:000000}를 사용해 점수를 여섯 자리로 표시하고,{combo:0.0}을 사용해 콤보를 소수점 한 자리까지 표시하세요.- 시간을
Time: 2:07형식으로 표시하세요.seconds / 60다음에 콜론을 넣고, 그다음seconds % 60을 두 자리로 표시하세요.
‘플레이’를 누르고 Space를 누르세요. 점수는 여섯 자리를 유지합니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
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;
}
}
실제 게임 만들기의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드