TIL(Today I Learned)

[Unity] TextMeshPro 사용하기 등 - TIL#32

Najdorf 2024. 2. 6. 23:40
728x90

오늘의 오류 상황

 

 

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 클래스를 사용하면 해당 기능들을 사용할 수 있다고 한다.

마침 마이크로소프트 공식 문서가 있으니 첨부해 놓는다.

 

https://learn.microsoft.com/ko-kr/troubleshoot/developer/visualstudio/csharp/language-compilers/compute-hash-values

 

C를 사용하여 해시 값 계산/비교 # - C#

해시 값을 가져오는 방법과 Visual C#을 사용하여 두 해시 값을 비교하는 방법을 설명합니다.

learn.microsoft.com

 

728x90