Script Execution Order 설정을 사용하여 Unity가 다른 MonoBehaviour 클래스의 이벤트 함수를 호출하는 상대적인 순서를 지정합니다. 예를 들어 Unity가 Rotation MonoBehaviour 스크립트의 이벤트 함수를 실행하기 전에 MoveForward MonoBehaviour 스크립트의 이벤트 함수를 실행하도록 지정할 수 있습니다.
이러한 순서는 이벤트 함수의 각 카테고리에 개별적으로 적용되므로, Unity는 지정된 순서로 프레임 동안 호출해야 하는 Awake 함수를 호출한 후 나중에 동일한 순서로 활성 게임 오브젝트의 Update 함수를 호출합니다.
Project Settings 인스펙터에서 스크립트 실행 순서를 조정할 수 있습니다. 메뉴 Edit > Project Settings 로 이동한 후 Script Execution Order 카테고리를 선택합니다.
참고: 여러 게임 오브젝트에 여러 스크립트 유형을 할당하는 경우 스크립트 실행 순서는 연결된 게임 오브젝트에 관계없이 한 유형의 모든 스크립트가 다른 유형의 모든 스크립트보다 먼저 실행되도록 지정합니다.
더하기(+) 버튼을 사용하여 설정 인스펙터 창에 스크립트를 추가하고 클래스명을 선택합니다. 스크립트를 제거하려면 목록의 각 항목 오른쪽에 있는 빼기(-) 버튼을 사용합니다.
실행 순서를 지정하려면 목록의 항목을 원하는 위치로 드래그하거나 목록의 클래스 순서 번호를 편집합니다. 할당된 숫자는 상대적인 순서를 나타냅니다. Unity는 목록을 위부터 아래로(음수 순위가 더 높은 스크립트부터 양수 순위가 더 높은 스크립트까지) 실행합니다. Unity는 Default Time 슬롯에서 목록에 없는 스크립트를 실행하며, 이는 순서 번호가 음수인 스크립트 이후와 순서 번호가 양수인 스크립트 이전에 발생합니다.
순서 번호는 임의이며 물리적 수량을 나타내지 않습니다. 에디터는 이러한 값을 스크립트 메타데이터 파일에 저장합니다. 순서 번호 사이에 공백을 두면 목록에 다른 스크립트를 추가하거나 이동할 때 불필요한 파일 변경을 방지할 수 있습니다.
여러 씬이 추가적으로 로드되는 경우 설정된 스크립트 실행 순서는 한 번에 한 씬에만 전체적으로 적용됩니다. 예를 들어 설정된 실행 순서가 Script1 > Script2 > Script3인 경우 Unity는 첫 번째 씬에서 Script1의 모든 인스턴스를 업데이트하고, 첫 번째 씬에서 Script2의 모든 인스턴스를 업데이트하고, 첫 번째 씬에서 Script3의 모든 인스턴스를 업데이트한 후 다음 씬에서 임의의 업데이트를 실행합니다.
스크립트 실행 순서를 에디터에서 설정하는 것보다 코드에서 지정하는 것을 선호하는 경우, [DefaultExecutionOrder] 속성을 MonoBehaviour 파생 클래스에 적용하면 됩니다. 자세한 내용은 스크립팅 API의 DefaultExecutionOrder를 참조하십시오.
참고: 런타임 초기화 순서는 지정할 수 없기 때문에 Script Execution Order 설정 창에서 지정한 실행 순서는 RuntimeInitializeOnLoadMethod 속성으로 표시된 함수 순서에 영향을 주지 않습니다. 또한 스크립트 실행 순서는 OnDisable 및 OnDestroy 함수에 영향을 주지 않습니다.
Unity가 프레임에서 이벤트 함수의 다양한 카테고리를 각각 호출하는 시기에 대한 내용은 이벤트 함수 실행 순서를 참조하십시오.
MonoManager