프로그래밍/유니티 개발

유니티 Start 함수 초기화(Life Cycle) 순서 지정방법

백사니 2025. 2. 10. 15:21
728x90
반응형

유니티에는 Life Cycle(함수 호출 주기)가 존재한다. 이는 사용자가 다룰 수 없으며 유니티에서 순서를 보장해준다. 때문에 사용자는 이를 이용해 함수의 실행 순서를 예측할 수 있다.

하지만 가혹가다 이러한 Life Cycle 때문에 예상치 못한 오류가 발생하기도 한다.

 

만약 Start 함수에서 특정 객체 A의 초기화를 진행하고 이후 다른 객체 B의 Start 함수에서 A의 초기화된 정보를 가지고 작업을 수행하려한다면 유니티에서 어떤 객체의 Start를 먼저 작동시켜줄 지 알 수 없다. 만약 이러한 의존 관계에서 A가 초기화되기 전 B의 Start 함수가 작동이 된다면 A의 정보가 확실하지 않아 오류가 발생할 수 있다.

이러한 상황을 대비해 Unity에서는 사용자 객체의 함수 호출 주기의 순서를 사용자가 지정해줄 수 있다.

 

함수 호출 주기 순서 설정하기

Edit → ProjectSettings 창을 열어준다.

ProjectSettings에 Script Execution Order 창에서 + 버튼을 눌러서 클래스를 추가해준다.

Apply를 해주면 클래스의 함수 호출 순서를 지정해줄 수 있다.

해당 방법을 이용하면 같은 Awake나 Start 함수 호출 시 순서가 더 빠른(숫자가 작은) 객체의 함수가 먼저 호출 될 수 있게 보장해준다.

또한 이러한 방식은 다음과 같은 상황에서도 유용하게 사용될 수 있다:

  • 게임 매니저나 시스템 매니저와 같은 핵심 컴포넌트의 초기화를 다른 객체들보다 먼저 실행해야 할 때
  • 데이터 로딩이나 네트워크 연결과 같은 중요한 초기화 작업이 다른 컴포넌트들보다 선행되어야 할 때
  • UI 요소들의 초기화 순서를 제어해야 할 때

주의할 점은 이러한 실행 순서 지정이 같은 Life Cycle 내에서만 적용된다는 것이다. 예를 들어, Awake 함수는 항상 Start 함수보다 먼저 실행되며, 이는 Script Execution Order 설정으로 변경할 수 없다.

또한, 과도한 의존성을 만들지 않도록 주의해야 한다. 가능하다면 객체 간의 의존성을 최소화하고, 필요한 경우에만 실행 순서를 지정하는 것이 좋다.

728x90
반응형