Unity의 모든 스크립트들은 아래의 그림처럼 순서대로 실행되지만 이것은 각각의 스크립트가 실행되는 순서이기 때문에,
(A 스크립트의) Awake => Start => (B 스크립트의) Awake => Start 순으로 실행된다.
(실제로 조정하지 않는한 A와 B 중 무슨 스크립트가 먼저 실행될지는 모른다. 예시일뿐!)
[이미지 출처 유니티 공홈] https://docs.unity3d.com/kr/2022.3/Manual/ExecutionOrder.html
활용을 위해 꼭 앞에 실행되어야 하는 스크립트가 있다. 이럴땐 어떻게 해야하는가!
지금까지는 최대한 각 스크립트를 인용하며 순서대로 맞춰왔다. 하지만 객체지향을 배운 지금은 이것이 얼마나 서로의 의존도를 높이는 일인지 알기 때문에, 다른 방법을 물색해보았고, 아주 쉽게 스크립트의 순서를 정할수있는 방법을 찾았다.
Script Execution Order 을 사용하는 것이다.
Edit > Project Settings 에 위치해있으며, 클릭하면 이런 화면을 볼 수 있을 것이다
엔진 내부의 스크립트들, 자세히 보면 모두 익숙한 이름들이다.
이 곳 우측 하단에 + 버튼을 누르면 원하는 스크립트를 설정할 수 있다.
낮은 값일수록 먼저 실행, 높은 값일수록 나중에 실행된다.
이 곳에 있는 스크립트 외의 스크립트들은 Default Time에 들어간다.
*주의사항* 항상 -1 순서로 지정되는 시네머신, 카메라와 관련된 스크립트라면 잘 고려하여 설정해야할 것 같다.
아래는 Script Execution Order 리스트에 순서 조정이 필요한 스크립트를 실제로 추가해본 사진이다.
'Game Development > Unity' 카테고리의 다른 글
[Unity] SendMessage (1) | 2024.09.01 |
---|---|
[Unity] Raycast(레이캐스트) (0) | 2024.09.01 |
[Unity] 터레인 (Terrain) 생성 (0) | 2024.08.20 |
[Unity] Animator (0) | 2024.02.20 |
[Unity] 2D게임 공부중 버그 : Scale 설정 (0) | 2024.02.14 |