영상 :
플랫폼 게임처럼 여러 스테이지가 존재할 경우, 각 스테이지의 레벨 데이터를 프리팹화한 후, 게임매니저(GameManager)를 통해 해당 데이터를 불러오는 방식이 일반적이다.
하지만 플레이어와 카메라 같은 오브젝트가 스테이지 로딩 시 초기화된다면, 게임매니저는 이들을 자동으로 컴포넌트에 연결하지 못하고 Missing 상태가 된다.
그 후 레벨 데이터 스크립트에서 초기화가 이루어지면 다시 오브젝트가 연결되긴 하지만, 만약 레벨 데이터의 초기화 함수를 Start가 아닌 OnEnable이나 Awake에서 사용한다면 문제가 발생할 수 있다.
이유는, Unity의 Life Cycle에 의해 레벨 데이터 스크립트의 초기화가 게임매니저보다 먼저 실행되기 때문이다. 그 결과, 게임매니저가 아직 준비되지 않은 상태에서 레벨 데이터를 불러오게 되고, Missing 오브젝트에 대한 참조 오류가 발생한다.
이 문제를 해결하는 방법은 다음과 같다.

Project Settings - Script Execution Order에서 스크립트의 우선순위를 조절하여, 게임매니저가 레벨 데이터보다 먼저 실행되도록 설정한다.혹은
Start에서 실행되도록 변경하여, 게임매니저가 준비된 후에 레벨 데이터가 초기화되도록 한다. void Start() // void Awake() 대신 우선순위가 느린 Start 함수 사용
{
GameManager.instance.player = player;
GameManager.instance.cinemachine = cinemachine;
}
이 두 가지 방법을 통해 게임매니저와 레벨 데이터 간의 참조 문제를 해결할 수 있다.