시작하기
Infinity Value 설치와 값 생성·연산·파싱·저장
설치
Unity Package Manager로 패키지를 추가합니다.
https://github.com/achieveonepark/infinity-value.git또는 Packages/manifest.json에 추가합니다.
{
"dependencies": {
"com.achieve.infinity-value": "https://github.com/achieveonepark/infinity-value.git"
}
}값 생성
using Achieve.InfinityValue;
InfinityValue a = 1000;
InfinityValue b = new InfinityValue(1_500_000L);
InfinityValue c = new InfinityValue(1.5e12);
InfinityValue d = new InfinityValue("300B 200A");콘텐츠별 단위 이름 사용
시스템마다 다른 접미사가 필요할 때 InfinityValueUnitNames를 사용합니다.
var currencyUnits = new InfinityValueUnitNames(new[]
{
"", "K", "M", "B", "T", "Qa", "Qi"
});
var damageUnits = new InfinityValueUnitNames(new[]
{
"", "a", "b", "c", "d", "e", "f"
});
InfinityValue gold = new InfinityValue("12K", currencyUnits);
InfinityValue damage = new InfinityValue("12a", damageUnits);각 InfinityValue는 전달받은 단위 이름 인스턴스를 그대로 가집니다. 산술 연산은 왼쪽 값의 단위 이름을 유지합니다.
InfinityValue totalGold = gold + new InfinityValue(5000, currencyUnits);
Debug.Log(totalGold); // 17.00K안전한 파싱
if (!InfinityValue.TryParse("5B", currencyUnits, out var parsed))
parsed = InfinityValue.Zero.WithUnitNames(currencyUnits);저장과 로드
가장 간단한 영속화 방식은 표시 문자열을 저장하고, 로드 시 같은 단위 이름 세트로 파싱하는 것입니다.
PlayerPrefs.SetString("gold", gold.ToString());
string raw = PlayerPrefs.GetString("gold", "0");
InfinityValue.TryParse(raw, currencyUnits, out gold);