반응형
보통 유니티 프로젝트라 하면 싱글톤으로 시작해서 싱글톤으로 끝난다.
제페토의 타입스크립트로 싱글톤을 어떻게 구현해야 하나 찾아봤다.
갖다 쓸 사람 갖다 쓰세요.
ObstacleManager라는 매니저를 만든다고 가정하면 아래와 같은 코드가 나온다.
export default class ObstacleManager extends ZepetoScriptBehaviour {
private static instance: ObstacleManager;
static getInstance() {
return this.instance || (this.instance = new this());
}
Start() {
ObstacleManager.instance = this;
}
}
Start() 안의 부분은 내가 지어낸 건데 보통 대부분의 언어는 싱글톤을 만들면 초기 인스턴스를 설정해주는 부분이 없으나 유니티는 저 부분이 매우 필요하다.
(먼가 글하나 날로 먹는 것 같아서 살짝 TMI를 넣어본다.)
이 말이 이해가 안 가는 사람은 아직 유니티에서 싱글톤의 초기 인스턴스가 필요한 형태의 특수성을 이해할 정도로 더 많이 쓰지 않았다는 것이다. 쉽게 말하자면 유니티 프로젝트 안에 싱글톤 매니저 만들고 인스펙터에서 초기값 이것저것 설정해놓는 부분이 있는데 그거 자체가 이미 싱글톤 인스턴스가 생성된 것이라고 보면 된다. 그래서 저 코드가 없으면 당신이 설정해놓은 싱글톤 인스턴스가 스태틱 인스턴스에 안 들어가서 설정해놓은 초기값을 못쓰고 스태틱 그냥 새로운 인스턴스를 만들어버린다.
더 깔끔한 방법이 없나 아쉽긴 한데... 저 정도만으로 해도 크게 문제 될 건 없을 것 같다.
ObstacleManager.getInstance().SpawnCar() 이런 식으로 호출해서 사용하면 된다.
반응형
'Unity > 제페토 스튜디오' 카테고리의 다른 글
제페토 스튜디오 - 아바타 불러오기 (7) | 2021.11.20 |
---|---|
제페토 스튜디오 - 제페토 월드 접속에 실패했어요. 다시 시도해 주세요. (25) | 2021.11.13 |
제페토 스튜디오 - 기본 프로젝트 구동하기 (1) | 2021.11.13 |
제페토 스튜디오 - 간단한 개발 후기 (11) | 2021.10.21 |
제페토 스튜디오 - typescript sources is not compiled yet. (8) | 2021.10.20 |