인프런 커뮤니티 질문&답변

루테닛댄님의 프로필 이미지
루테닛댄

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

플레이어 설정

Singleton 패턴 관련 문의

작성

·

403

0

안녕하세요. 강의 잘 듣고 있습니다.

제가 Singleton 패턴을 잘 이해한 것인지 헷갈려서..

아래와 같이 메모해 두었는데 제대로 이해한 것일까요?

 //그러니까 

// Manager s_instance = new Manager(); 이게 안되니까

// go라는 GameObject를 만들어 @Managers 라는 GameObject를 생성해 집어넣던지 있으면 찾아넣던지 하고

// @Managers에 Managers클래스(스크립트)를 컴포넌트로 같다붙인 뒤

// Managers 클래스의 static instance인 s_instance에다가

// @Manager라는 GameObject에 붙어있는 컴포넌트 -> Managers 클래스를 집어넣음으로써

// 결과적으로 Managers의 static instance인 s_instance에다가 

// Managers 를 갖다넣음 즉 Manager s_instance = new Manager(); 이거를

// @Managers 라는 GameObject라는 애를 통해서 우회적으로 한 것임.

감사합니다.

답변 3

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 이해하신 것은 맞는데
저게 정확히 Singleton에 관한 얘기는 아닙니다.
디자인 패턴에서 말하는 싱글톤은 
(보통 static을 활용해) 하나만 존재하는 전역 클래스를 사용하는 패턴이고,
저렇게 Manager를 만든 것은 유니티의 Component 구조에 맞게 살짝 틀어준 것이죠.

0

ㅋㅋㅋㅋ재밋게 적어놓으셨내요 ㅋㅋㅋㅋ 저도딱 저렇게 이해했는대

0

제 경우에는 @Managers Objects 가 없는 경우 정상적으로 null Check 를 해서 @Managers Objects 를 만들고 Managers Component 도 붙이는것 같긴한데요.. 아래와 같은 Warning이 납니다.

ou are trying to create a MonoBehaviour using the 'new' keyword.  This is not allowed.  MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all

강사님 답변을 찾아보니 GamesObject 는 Monobehavior 상속을 받지 않기 때문에 new 로 생성이 가능하다고 하신것 같은데, 자료에 있는 스크립트와 제가 작성한 스크립트를 찾아봐도 차이점을 도저히 모르겠습니다 ㅠㅠ;

 

루테닛댄님의 프로필 이미지
루테닛댄

작성한 질문수

질문하기