[25.06.06] TIL( 개인프로젝트 진행 & BigInteger )

설민우·2025년 6월 9일

내일배움캠프 - Unity

목록 보기
57/85

우선 간단했던 저번 인벤토리에서, 자동 사냥기능과
등급, 아이템 랜덤 등장의 부가 기능을 추가했습니다.

  • 조금더 게임 같은 느낌이 들 수 있도록, Player와 Enemy를 만들었습니다.
  • BigInteger로 Coin과 데미지를 관리합니다.
  • 등급 분류를 통해 변동된 확률로 아이템을 획득합니다.

Unity에서 BigInteger 사용하기

Unity에서 BigInteger 다루기

Unity는 기본적으로 int, long 타입까지만 정수 연산을 지원한다. 그러나 Idle/Incremental 게임이나 경영 시뮬레이션처럼 엄청나게 큰 숫자(예: 10^50)를 다뤄야 할 경우, C#의 System.Numerics.BigInteger 타입을 사용할 수 있다.


✅ 사용 방법

1. 네임스페이스 추가

BigInteger는 System.Numerics 네임스페이스 안에 정의되어 있기 때문에 다음과 같이 명시적으로 using 선언이 필요하다.

using System.Numerics;

2. BigInteger 변수 선언 및 초기화

  • BigInteger bigNum = new BigInteger(1000000000);
  • BigInteger fromString = BigInteger.Parse("10000000000000000000000000");

3. 기본 연산 지원

  • 사칙 연산 가능: +, -, *, /, %
  • 비교 연산 가능: ==, >, <
  • MathfMath 클래스는 사용할 수 없으며, BigInteger 자체 연산 또는 별도 구현 필요

4. 문자열 출력

  • string text = bigNum.ToString();

주의 사항

  • Unity에서는 IL2CPP 빌드 시 AOT 관련 문제가 발생할 수 있음
  • System.Runtime.Numerics.dll이 빌드 환경에서 누락될 수 있으므로 .NET 4.x 사용 권장
  • Android/iOS 타겟 빌드 시에는 반드시 Mono 또는 IL2CPP에서 정상 동작 확인 필요

  • 너무 큰 수를 반복적으로 생성하면 GC 부하가 커질 수 있으니 가급적 재사용 또는 캐싱 전략 고려
  • ToString("E")을 사용하면 지수 형태로 출력 가능

느낀 점

BigInteger는 모바일 방치형 게임에서 자주 보던 단위 계산을 위한 변수였습니다. 단순히 floatdouble로는 커버할 수 없는 범위가 존재하고, 이를 깔끔하게 처리하려면 BigInteger나 별도의 숫자 포맷 유틸이 필요하다는 걸 체감했습니다.

profile
클라이언트 개발자를 지망하고 있습니다.

0개의 댓글