유니티 C# - Float to String

황정욱·2022년 11월 3일
0
post-thumbnail

유니티 UI는 매우 중요하다. 유저가 쉽게 알아볼 수 있도록 설계하는 것이 중요하다. 하지만 콘솔창에서 숫자를 백만자리까지 찍어도 숫자에 콤마가 없다. 혹은 소수점 자리가 굉장히 길게 나올 때가 있다. 그래서 유니티 Text UI에 출력하는 숫자를 올바르게 표현하고자 자릿수 출력을 알아야한다.

먼저 기존의 Canvas를 삭제하고 새로운 Text (Legacy)를 만들어준다. 후 Canvas는 해상도에 맞게 조정하고 TextUI의 포지션을 리셋시킨 후 PosY의 값을 250으로 바꿔준다. 글씨 크기는 보기 좋게 150으로 바꾸고 Horizontal OverflowVertical Overflow를 Overflow로 바꿔준다.

마지막으로 가운데 정렬 중간 정렬을 해준다. 두개 더 만들고 각각 가장 먼저 있던 Text UI 아래로 이쁘게 배치해준다.

FloatToString이라는 새로운 스크립트를 만들고 상단에 using UnityEngine.UI;를 추가한다. 스크립트의 내용은 간단하다.

public class FloatToString : MonoBehaviour
{
    public Text text1;
    public Text text2;
    public Text text3;

    // Start is called before the first frame update
    void Start()
    {
        float a = 1.234f;
        text1.text = a.ToString("F1");
        text2.text = a.ToString("F2");
        text3.text = a.ToString("F3");
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

이렇게 만들고 에디터로 돌아가 스크립트를 GameManager의 컴포넌트로 존재하게 만든 후 Hierarchy창에 있는 Text를 순서대로 끼워준다.

이제 출력을 하면 소수점이 다르게 나온는 걸 알 수 있다.

코드를 바꿔 천의 자릿수 마다 쉼표가 찍히게 해주겠다.

public class FloatToString : MonoBehaviour
{
    public Text text1;
    public Text text2;
    public Text text3;

    // Start is called before the first frame update
    void Start()
    {
        float num = 123456.987f;
        text1.text = num.ToString("N0");
        text2.text = num.ToString("N1");
        text3.text = num.ToString("N2");
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

이렇게 작성하고 출력을 하면 천의 자릿수 마다 쉼표가 찍히고 원하는 소수점까지 출력을 할 수 있다.

profile
C언어, C#, 그리고 유니티

0개의 댓글