Unity에서 BigInteger를 사용하여 큰 숫자를 단위(k, m, b)로 표시하기
오늘은 Unity에서 System.Numerics.BigInteger 클래스를 사용하여 매우 큰 숫자를 다루고, 이를 클리커 게임처럼 간단한 단위(k, m, b 등)로 변환하여 표시하는 방법을 배웠다. 아래는 그 과정에 대한 자세한 설명이다.
먼저, System.Numerics.BigInteger 클래스를 사용하기 위해 해당 네임스페이스를 임포트한다.
using System.Numerics;
다음은 BigInteger 객체를 생성하고 기본적인 사칙연산을 수행하는 방법이다.
BigInteger bigInt1 = new BigInteger(123456789012345678901234567890);
BigInteger bigInt2 = BigInteger.Parse("987654321098765432109876543210");
BigInteger sum = bigInt1 + bigInt2; // 더하기
BigInteger difference = bigInt1 - bigInt2; // 빼기
BigInteger product = bigInt1 * bigInt2; // 곱하기
BigInteger quotient = bigInt1 / bigInt2; // 나누기
클리커 게임처럼 큰 숫자를 k, m, b 등의 단위로 변환하여 표시하는 함수 FormatBigNumber를 구현한다.
using System;
using System.Numerics;
using UnityEngine;
using UnityEngine.UI;
public class BigNumberFormatter : MonoBehaviour
{
public Text displayText;
void Start()
{
BigInteger bigNumber = BigInteger.Parse("123456789012345678901234567890");
displayText.text = FormatBigNumber(bigNumber);
}
string FormatBigNumber(BigInteger number)
{
if (number < 1000)
{
return number.ToString();
}
string[] units = { "", "k", "m", "b", "t", "q", "Q", "s", "S", "o", "n" };
int unitIndex = 0;
BigInteger divisor = 1000;
while (number >= divisor && unitIndex < units.Length - 1)
{
number /= divisor;
unitIndex++;
}
// Adjust to display one decimal place if the number is large enough
string formatString = unitIndex == 0 ? "{0}" : "{0:0.#}{1}";
return string.Format(formatString, number, units[unitIndex]);
}
}
Imports 및 클래스 선언
System.Numerics.BigInteger를 사용하여 큰 정수를 다룬다.
UnityEngine과 UnityEngine.UI를 사용하여 Unity 환경에서 UI 요소를 다룬다.
FormatBigNumber 메서드
BigInteger 숫자를 입력받아 k, m, b 등의 단위로 변환하여 문자열로 반환한다.
숫자가 1000 미만이면 그대로 문자열로 반환한다.
units 배열에는 단위가 저장되어 있으며, unitIndex를 사용하여 현재 숫자가 어떤 단위에 해당하는지 추적한다.
숫자가 1000 이상일 때마다 1000으로 나누고, unitIndex를 증가시켜 단위를 바꾼다.
변환된 숫자와 단위를 결합하여 포맷팅된 문자열을 반환한다. 필요한 경우 소수점 한 자리까지 표시한다.
Unity UI와의 통합
displayText는 Unity UI의 Text 컴포넌트이다.
Start 메서드에서 예제 숫자를 포맷팅하여 displayText에 표시한다.
스크립트 추가
위의 스크립트를 Unity 프로젝트의 C# 스크립트 파일로 저장한다.
Unity 에디터에서 적절한 GameObject에 스크립트를 추가한다.
Text 컴포넌트 연결
displayText 필드에 Unity UI의 Text 컴포넌트를 드래그하여 연결한다.
실행
Unity 에디터에서 Play 버튼을 눌러 스크립트가 작동하는지 확인한다.
오늘은 Unity에서 System.Numerics.BigInteger 클래스를 사용하여 큰 숫자를 단위(k, m, b 등)로 변환하여 표시하는 방법을 배웠다. 이 방법을 통해 클리커 게임이나 기타 큰 숫자를 다루는 게임에서 쉽게 숫자를 읽을 수 있게 만들 수 있다.
이렇게 만든 클리커 게임에도 적용을 해보았다.
