🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Manager의 Start() 메서드 관련 질문입니다.

23.01.31 12:06 작성 조회수 256

0

GameScene.cs 에서

Managers.UI.ShowPopupUI<UI_TitlePopup>();

위의 Manager 클래스의 프로퍼티 UI 를 반환받는 과정에서 이미 Manager 클래스의 Init() 메서드를 호출하는 것으로 확인했습니다.

그럼에도 불구하고 Manager 클래스의 Start() 메서드에서 Init()을 또 호출하는 특별한 이유가 있나요?

Start() 에서 Init()을 호출하는 시점의 s_instance 멤버 변수 null 체크를 해보니 이미 최상단에 말씀드린 과정에서 Manager가 생성되어 전부 null이 아니라고 로그가 찍힙니다.

(사실상 Start()를 지워도 문제 없이 Manager 오브젝트는 생성됨)

물론 다른 Manager들도 위의 과정에서 new 키워드로 전부 생성 되었고요.

그렇다면 Start() 메서드에서 Init()을 호출하는 것은 사실상 불필요한 호출이고, 정말 만약에라도 Manager의 Start() 가 실행되기 전까지 s_instance 가 null 일 경우가 생길 수 없는 것 같아서요.

제가 못 본 다른 이유가 있는 걸까요?

답변 1

답변을 작성해보세요.

0

원래 Manager Start에서 Init을 통해서 초기화를 하다가,
다른 곳에서 Managers Start 가 발생하기 전에 매니저를 사용할 경우 (ex. Managers.UI.ShowPopup)
NULL 크래시가 나기 때문에 언제 어디서라도 편하게 사용할 수 있게
Init() 하는 부분이 매니저의 프로퍼티에 추가 되었습니다.
그러니 뭐 사실 Start의 Init은 불필요한 부분이긴 하지만
또 어떻게 바뀔지 모르니 그냥 일단 남겨뒀습니다.

이런 부분은 딱히 중요한 부분이 아니라 원하시는 대로 수정하셔도 무방합니다.

 

답변 감사합니다.

채널톡 아이콘