포스트

[Unity] 스크립트 실행 순서 조정 Script Execution Order

[Unity] 스크립트 실행 순서 조정 Script Execution Order

Unity Script Execution Order


1. Script Execution Order란?

Unity에서 여러 MonoBehaviour 스크립트가 있을 때,
어떤 스크립트가 먼저 실행되고 어떤 스크립트가 나중에 실행될지를 제어하는 개념입니다.

특히 Awake(), Start(), Update() 등의 호출 순서를 정해
게임 로직 간 의존성 문제를 예방할 수 있습니다.


2. Unity의 기본 실행 순서

초기화 단계

순서메서드설명
1Awake()오브젝트가 생성될 때 호출
2OnEnable()오브젝트가 활성화될 때 호출
3Start()모든 Awake가 끝난 후 한 번 호출됨

프레임 루프 단계

메서드설명
Update()매 프레임마다 호출
LateUpdate()모든 Update() 후 호출
FixedUpdate()고정 시간 간격으로 호출 (물리용)

Start()는 모든 Awake()가 호출된 후 실행됩니다.


3. 문제 예시

1
2
3
void Start() {
    GameManager.Instance.DoSomething();  // GameManager가 아직 초기화되지 않았다면 NullReference 예외 발생
}
  • GameManager의 Start가 더 늦게 실행될 경우 문제가 발생할 수 있음

4. Script Execution Order 설정 방법

  1. Unity 메뉴 → Edit > Project Settings > Script Execution Order
  2. 스크립트를 등록하고 실행 순서를 숫자로 지정
숫자우선 순위
작은 값먼저 실행
큰 값나중에 실행

예: -100이면 다른 0보다 먼저 실행됨


5. 대표적인 활용 사례

사용 사례설명
싱글톤 매니저 초기화다른 컴포넌트보다 먼저 Awake 실행 필요
카메라 LateUpdate 제어플레이어 이동 후 따라붙기
물리 처리 정확성FixedUpdate 순서 조정 필요 시

6. 팁

  • 가능한 한 모든 스크립트에 설정하지 말고, 핵심 의존성만 설정하는 것이 좋습니다.
  • 복잡한 의존 관계는 명시적 Init() 호출로 처리하는 방법도 좋습니다.
  • Script Execution Order 설정은 디버깅이 어려우므로 최소화가 유지보수에 유리합니다.

7. 요약

항목설명
기능MonoBehaviour 메서드 실행 순서를 제어
기본 순서Awake → OnEnable → Start → Update → LateUpdate
설정 위치Edit > Project Settings > Script Execution Order
우선순위 숫자작을수록 먼저 실행됨
주의점핵심 스크립트만 설정, 과도한 사용 지양
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.