[TIL] Unity enum 초기값 문제로 인한 잘못된 UI 상태 진입

백성은·2025년 5월 7일

TIL

목록 보기
24/34

Unity enum 초기값 문제로 인한 잘못된 UI 상태 진입

✅ 개요

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이 되기 때문에, 따로 초기화하지 않아도 안전함

profile
게임 개발일지

0개의 댓글