유니티 [DefaultExecutionOrder]에 대해서

[DefaultExecutionOrder]이란?

Unity에서 스크립트의 기본 실행 순서를 지정하는 데 사용됩니다. 기본적으로 Unity는 임의의 순서로 스크립트를 실행하므로 스크립트가 서로의 실행 순서에 따라 달라지는 경우 예측할 수 없는 동작이 발생할 수 있습니다. [DefaultExecutionOrder] 속성을 사용하면 스크립트가 실행되어야 하는 순서를 명시적으로 정의할 수 있습니다.

실행 순서 값이 낮은 스크립트는 값이 높은 스크립트보다 먼저 실행됩니다.

 

  • ScriptA는 실행 순서 값이 -10이므로 다른 모든 스크립트보다 먼저 실행됩니다.
  • ScriptB의 실행 순서 값은 5이며, ScriptA 뒤에 있지만 기본 실행 순서 값인 0보다 앞에 있습니다.
  • ScriptC 및 ScriptD 모두 실행 순서 값이 0이지만 ScriptC는 ScriptA에 종속되므로 Unity는 ScriptA가 ScriptC보다 먼저 실행되도록 합니다.
  • ScriptE는 가장 높은 실행 순서 값인 10을 가지므로 마지막에 실행됩니다.

[DefaultExecutionOrder]확인방법

 

"Edit" -> "Project Settings" -> "Script Execution Order" 메뉴에 있는 "Script Execution Order" 설정을 사용하여 Unity Editor에서 확인 및 재정의, 추가로 조정할 수 있습니다.

 


[DefaultExecutionOrder]사용하는 이유

플레이어 캐릭터와 적 캐릭터가 있는 간단한 게임을 상상해 봅시다!

플레이어와 적 모두 스크립트가 첨부되어 있다고 가정하겠습니다!


플레이어 캐릭터는 플레이어 입력과 이동을 처리하는 'PlayerController'라는 스크립트를 가지고 있습니다. 적 캐릭터에는 적의 행동을 제어하는 ​​'EnemyAI'라는 스크립트가 있습니다. 두 스크립트 모두 Update() 함수를 사용하여 작업을 수행해야 합니다!


이제 적 캐릭터가 플레이어 캐릭터를 쫓아 공격을 시도하는 "ChasePlayer"라는 특수 능력을 가지고 있다고 가정해 보겠습니다. 'ChasePlayer' 스크립트가 제대로 작동하려면 적 캐릭터가 플레이어를 추격하기 전에 플레이어 캐릭터가 움직이는지 확인해야 합니다.


이를 달성하기 위해 [DefaultExecutionOrder]를 사용하여 스크립트의 실행 순서를 지정할 수 있습니다. PlayerController 스크립트에 낮은 순서 값(예: -1)을 할당하고 EnemyAI 스크립트에 높은 순서 값(예: 0)을 할당합니다. 이렇게 설정함으로써 PlayerController 스크립트가 각 프레임에서 EnemyAI 스크립트보다 먼저 실행되게 할 수 있습니다!


플레이어 캐릭터가 먼저 움직이고 적 캐릭터가 플레이어의 업데이트된 위치를 기반으로 다음 행동을 계산할 수 있게 되었으므로, 이를 통해 적 캐릭터가 플레이어 캐릭터를 올바르게 쫓고 보다 현실적이고 매력적인 게임 플레이 경험을 제공할 수 있습니다.