인프런 커뮤니티 질문&답변
Managers의 Start() 함수에 대해서 질문드립니다.
작성
·
281
0
아래 비슷한 질문을 먼저 읽어봤는데, 선생님의 답변
Managers를 Component로 만들었는데,
Scene에 배치된 GameObject에 기생(?)하고 있어야
해당 Component의 Start, Update가 호출됩니다.
을 보고 어느정도 이해가 되었습니다. 그런데 씬에 배치된 @Scene에는 컴포넌트로 Managers스크립트가 아닌 GameScene 스크립트가 들어가 있습니다. 그래서 저는 GameScene 스크립트 파일 코드 중, Managers.UI.ShowSceneUI<UI_Inven>(); 이 부분에서 Managers의 인스턴스를 처음으로 생성하는것으로 이해하고 이 지점에서 브레이킹 포인트를 잡고디버깅을 해보았는데,
이 구문이 실행되기 전에 이미 s_instance에 @Manager가 생성돼있었습니다. 즉 Managers의 start함수에서 init이 먼저 실행되었다는건데, 이때 매니저스는 어느 게임오브젝트에서도 기생하고 있지 않은데 언제 start함수가 실행되서 @Managers가 생성된 것인지 원리를 모르겠습니다..






Managers의 Init함수에 중단점을 잡고 다시 해보니 호출스택에서 BaseScene의 init이 실행될때 그 안에서 @EvntSystem을 Instantiate하는 Managers.Resource.Instantiate를 타고 들어와서 실행되는 것을 확인할 수 있었습니다. 감사합니다 !!
그런데 선생님 또 하나만 질문을 드리자면 결국에 Managers의 Start는 실행되지 않는건가요..?
좀 기본적인 질문을 묻는것 같아 죄송하네요.. 아직 처음 강의를 보는거라 열심히 따라하면서 보고있지만, ui부분은 코드를 따라치기 벅차고 전체적인 실행흐름을 파악하려고 하면 의문이 가득 생기네요.. 아직 처음이라 그런것일까요?