오늘의 TIL은 프로젝트 작업으로 인해 알게된 것을 짤막하게 서술한다. 여기서 알게된 사실들은 차후 유니티 문서항목에 추가할 것이다.
매개변수
public static void PrintTextHighlights(string s1, string s2, string s3 = "")
{
Console.Write(s1);
Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write(s2);
Console.ResetColor();
Console.WriteLine(s3);
}
해당 코드는 s2를 노란색으로 강조하는 함수이다.
다만 여기서 포인트는 s3에 있다. 매개변수에 s3 = "" 으로 되어있는데 이는 s3에 값이 안들어오면 ""으로 처리하겠다는 거다.
ConsoleUtility.PrintTextHighlights("Lv. ", player.Level.ToString("00"));
위와 같이 함수를 이용하면
Lv. 01 같은 형식으로 뜰 것이다.
매개변수가 3개로 보이지만 기본값을 설정해 2개만 넣어도 작동할 수 있게끔 함수를 구성한 것이다.
ToString("00")
또한 두 번째 인자를 보면 ToString("00") 으로 선언되어있는데 ToString("N2")의 정수판이라 보면된다. 00은 두 자리 문자열로 변환하라는 뜻이다. 두 자리보다 클 경우엔 그냥 그대로 반환한다.
TryParse
public static int PromptMenuChoice(int min, int max)
{
while (true)
{
Console.Write("원하시는 번호를 입력해주세요: ");
if(int.TryParse(Console.ReadLine(), out int choice) && choice >= min && choice <= max)
{
return choice;
}
Console.WriteLine("잘못된 입력입니다. 다시 시도해주세요.");
}
}
TryParse는 유니티 카테고리에서 한 번 다룬 내용인데 추가적인 내용을 다룬다.
해당 함수는 메뉴의 선택지 중 고를 수 있게 하는 함수이다. 메뉴에 선택지가 있을 경우 예를 들어 1번 부터 4까지 고를 수 있는 선택지가 있으면 min에 1, max에 4 값을 넘겨 주면 된다.
if문을 통해 입력하는 값이 정수인지 확인하고 && 연산자를 통해 정수가 맞다면 min과 max 의 범위 안의 숫자인지를 확인한다.
(&&나 || 의 경우 앞의 것이 false가 나오면 뒤에 것은 수행을 하지 않기 때문에 false가 나오면 바로 잘못된 입력이라는 문구가 출력되게 된다)
무한 반복문을 돌리고 정수고 메뉴 선택지 범위안에 있는 정수여야지만 해당 정수값을 return하면서 반복문을 빠져나갈 수 있게 된다.
또한 out int choice와 같이 작성하면 굳이 TryParse문 밖에 int 변수를 선언할 필요가 없어진다.