Menu
CoddyTech

숫자 형식 지정하기

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:23

00은 두 자릿수를 유지합니다. 이 형식이 없으면 64초의 랩 기록은 1:04가 아니라 1:4로 표시됩니다. 또한 (int)는 반올림하는 대신 소수 부분을 버리므로, 59.7초는 0:59로 표시됩니다. 반올림하면 잠깐 동안 0:60으로 표시될 수 있습니다.

challenge icon

챌린지

쉬움

아케이드의 세 숫자를 형식에 맞게 표시하세요.

  1. Update()에서 먼저 int seconds = (int)playTime;를 추가하세요.
  2. {score:000000}를 사용해 점수를 여섯 자리로 표시하고, {combo:0.0}을 사용해 콤보를 소수점 한 자리까지 표시하세요.
  3. 시간을 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 플레이그라운드