오늘의 오류 상황
1. TMP - Input Field에서 값이 안 가져와지는 현상
문제 상황:
TextMeshPro - Input Field를 이용해서 입력받은 값을 Int로 형변환을 하는게 목적이었는데, 계속 정상적으로 Int로 형변환을 할 수 없다며 에러가 뜬 것이다.
원인:
[SerializeField] private TextMeshProUGUI inputTxt;
var num = int.Parse(inputTxt.text);
문제 상황에서는 위의 코드처럼 Input Field의 자식으로 있는 Text를 TMP로 가져와서 .text로 접근했었는데, 이게 아무래도 문제가 됐던 모양이다.
해결:
가져올 텍스트를 Input Field의 하위 자식을 가져오지 말고, 처음부터 TMP_InputField로 가져오면 해결된다.
[SerializeField] private TMP_InputField inputField;
var num = int.Parse(inputTxt.text);
오늘의 알게 된 사실
1. 문자열 보간으로 천의 자리마다 콤마(,) 찍기
실수형 변수를 원하는 소수점 자리에서 반올림하는 것은 익히 알고 있었다.
예를 들어, 소수점 두 번째 자리에서 반올림한 형태를 문자열로 나타내려면,
cashTxt.text = cash.ToString("N2");
위와 같은 형태로 ToString 메서드 안에 "N2"를 적는 식으로 하면 된다.
정수형 변수의 천의 자리마다 콤마를 찍게하려면,
N2가 아닌 N0을 적으면 원하는 대로 적용된는 것을 볼 수 있다.
cashTxt.text = cash.ToString("N0");
2. TextMeshPro - InputField 에서 입력받을 정보의 유형 선택하기
InputField 안에 원하는 유형의 정보만 입력받게 하고 싶을 때가 있다.
숫자만 입력받게 한다던지, 비밀번호를 입력하는 경우 별표(*)로 마스킹 되는 것을 기대를 할 수 있다.
그럴 때는 Input Field의 Inspector 탭에 가서, 'Input Filed Settings > Content Type' 드롭박스를 건드리면 된다.
3. C#에서 원하는 정보 해시하기 (해시함수)
비밀번호를 입력받아서 그 정보를 타인이 알아볼 수 없게 암호화(해시)하려고 하는데,
C#에서는 어떻게 하는지 궁금해서 찾아봤다.
System.Security.Cryptography .NET Framework 클래스를 사용하면 해당 기능들을 사용할 수 있다고 한다.
마침 마이크로소프트 공식 문서가 있으니 첨부해 놓는다.
'TIL(Today I Learned)' 카테고리의 다른 글
[Unity] 팀 프로젝트 : 3D 퍼즐 게임 기획 - TIL#34 (0) | 2024.02.08 |
---|---|
[Unity] ATM기 모방하기 - TIL#33 (0) | 2024.02.07 |
크기가 작은 부분문자열 - TIL#31 (0) | 2024.02.05 |
3D Survival 게임 만들기 - TIL#30 (0) | 2024.02.02 |
C# 메모리의 작동 방식(구조체와 클래스의 차이) - TIL#29 (0) | 2024.02.01 |