내일배움캠프 37일차 TIL - 스크립트 실행 순서

권태하·2024년 6월 7일
post-thumbnail

한 오브젝트에 붙어있는 스크립트들의 실행 순서 결정

Unity에서는 스크립트의 실행 순서를 Script Execution Order 설정을 통해 조절할 수 있습니다. 이 설정은 Unity Editor의 Edit > Project Settings > Script Execution Order에서 찾을 수 있습니다.
기본적으로, 모든 스크립트의 Update() 메서드는 프레임마다 한 번씩 호출되며, 호출 순서는 Unity 엔진에 의해 결정됩니다. 그러나 Script Execution Order 설정을 사용하면 특정 스크립트가 다른 스크립트보다 먼저 또는 나중에 실행되도록 순서를 지정할 수 있습니다.
Script Execution Order 설정 창에서는 스크립트를 목록에 추가하고, 드래그 앤 드롭으로 순서를 변경할 수 있습니다. 숫자가 낮을수록 해당 스크립트는 다른 스크립트보다 먼저 실행됩니다.
이 설정은 게임 로직에 따라 필요한 경우에만 사용해야 합니다. 대부분의 경우, 스크립트 간의 의존성을 최소화하고, 각 스크립트가 독립적으로 동작할 수 있도록 설계하는 것이 좋습니다.

동일 오브젝트에 붙어있는 스크립트들의 Awake 호출 순서를 조정하려면?

Unity에서는 동일한 게임 오브젝트에 붙어 있는 여러 스크립트의 Awake() 호출 순서를 직접 조절하는 방법을 제공하지 않습니다. Awake()는 스크립트가 처음으로 활성화될 때 호출되는 함수이며, Unity 엔진이 자동으로 호출합니다.
스크립트 간의 실행 순서를 조절하는 Script Execution Order 설정은 Update(), FixedUpdate(), LateUpdate() 등의 함수에 대해서만 적용되며, Awake()나 Start() 함수에는 적용되지 않습니다.
따라서 Awake() 호출 순서를 조절하려면 다른 방법을 사용해야 합니다. 예를 들어, Awake() 함수에서 직접 다른 스크립트의 초기화 함수를 호출하거나, Awake() 대신 Start() 함수를 사용하여 초기화를 지연하는 방법이 있습니다.
그러나 이러한 방법들은 코드의 복잡성을 증가시키고, 예기치 않은 문제를 발생시킬 수 있으므로, 가능한 한 스크립트 간의 의존성을 최소화하는 것이 좋습니다. 스크립트가 독립적으로 동작하도록 설계하고, 필요한 경우에만 다른 스크립트의 함수를 호출하는 방식을 권장합니다.

profile
스터디 로그

0개의 댓글