📝 24.04.01
MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요.
MonoBehaviour 클래스는 Unity 프로젝트 창에서 C# 스크립트를 생성하면 자동으로 상속되는 클래스로 Unity가 제공하는 생명 주기와 관련된 메소드들을 호출할 수 있습니다. 초기화에 사용되는 Awake()와 Start() 메서드, 업데이트에 사용되는 Update(), FixedUpdate(), LateUpdate() 메서드, 상태 변화에 관련된 메서드들인 OnEnable(), OnDisable(), OnDestroy() 등이 바로 Monobehaviour 클래스의 주요 메서드입니다.
Unity 오브젝트가 다양하게 씬에 올라와 있다면 동시에 시작되고 무엇이 먼저 초기화 되는지 알 수 없을 수 있는데, 프로젝트에서 코드를 만들 때 이에 대해 고민하고 해결해본 경험이 있다면 설명해주세요.
프로젝트에서 초기화 시점으로 인해 문제를 겪은 적이 있습니다. GameManager에서 Player를 Awake()에 선언했는데, 다른 오브젝트에서 같은 Awake() 메서드에서 GameManager의 player를 사용하려고 하다 보니 Null 예외 오류가 났었습니다. 처음에는 이를 해결하기 위해 후자의 메서드를 Start() 시점으로 옮겼었습니다. 하지만 고민해본 결과 메서드 실행 시점을 한 스크립트에서 이벤트 시스템 구독을 통해 시점의 순서를 관리하는 방법이 더 효율적이라는 결론에 이르러 해당 방법으로 수정하였습니다.