Unity에서 UIState라는 enum을 사용해 UI 상태를 관리하던 중, 아무런 상태 설정을 하지 않았음에도 UIManager.currentState가 Talk으로 시작되는 문제가 발생했다.
UIManager는 UIState 열거형(enum)을 사용해 현재 UI 상태를 관리함
Awake() 함수 내부에서 상태 초기화를 하기 전에 currentState의 값을 로그로 찍었는데, 예상과 다르게 Talk으로 시작함
void Awake()
{
Debug.Log($"currentState: {currentState}");
}
// Console 출력 : currentState: Talk
해당 enum은 아래와 같이 정의되어 있었음
public enum UIState
{
Talk,
Enter,
GameStart,
Exit,
None
}
C#에서 enum은 별도로 초기값을 주지 않으면 0번 인덱스 값으로 초기화됨
따라서 currentState는 명시적으로 값을 넣지 않으면 UIState.Talk이 됨
이것이 바로 게임 시작 시 Talk 상태로 들어가 있던 이유였다.
None을 첫 번째로 올리기
public enum UIState
{
None,
Talk,
Enter,
GameStart,
Exit
}
이렇게 하면 enum의 기본값이 None이 되기 때문에, 따로 초기화하지 않아도 안전함