본문 바로가기

Unity/Problems

2020-05-14 유니티 싱글턴 패턴 이해하지 못했던것

 

ObjectPool.instance = this;

Mono를 상속받기 때문에 사실 this는 Mono가 된다.

즉 현재 스크립트를 말하게 됨


Mono를 상속받기 때문에 Mono의 최대강점인 컴포넌트로 이용이 가능하게된다.

 

ObjectPool.instance = new ObjectPool();

일단 MonoBehaviour 를 상속받은 클래스는 new 로 동적 할당할 수 없다.
위에서 ObjectPool은 Mono를 상속 받기 때문에 new를 사용할 수 없는것이다. 

 

 

 

내가 이게 갑자기 헷갈렸던 이유는 DataManager 생성에 있었다.

 

위의 코드에서 DataManager는 아무것도 상속받지 않는다.

그렇기 때문에 new 지정자를 사용할 수 있는데,

DataManager를 코딩하던 도중에 ObjectPool 싱글턴 클래스처럼, 

 

DataManager.instance = this;

이렇게 코딩해놓고, 유니티 출력화면에 데이터 로드가 잘되었는지 확인 한결과 Null 값이 나와서

계속 헤맸다.

코드를 보고도 무엇이 문제인지 찾아내기에 한참 걸렸기 때문에,

결론: 현재 내가 Mono와 New지정자 부분이 아리송 했었다는 것을 깨달았다.

 

https://skuld2000.tistory.com/25

 

[Unity] MonoBehaviour 총정리 및 생명주기(Lifecycle)

1. 모노 (Mono) .Net은 마이크로 소프트(MicroSoft)에서 C언어에 자바의 장점을 수용하여 개발한 MS Windows 프로그램 개발 및 실행 환경이자 언어이다. 네트워크와 UI 등의 많은 작업을 캡슐화 하여 코딩��

skuld2000.tistory.com

이 글을 참고하여 다시 이해했으며, Mono를 상속받고 안받고의 차이와, new 지정자를 언제 써야하는지에 대한 개념을 

다시 정립하게 되었다.

 

 

앞으로 생각해봐야하는 것은 DataManager에서 가져온 값으로

ObjectPool 만들어 컴포넌트로 사용해 Lobby 씬과 Ingame씬에서 사용하는 것이다.