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

황라윤님의 프로필 이미지
황라윤

작성한 질문수

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

싱글톤 패턴 관련 질문드립니다

해결된 질문

작성

·

314

1

직접 만든 게임을 모바일에서 출시해보고 싶어 유니티 공부를 시작했는데 서적이나 유튜브 강의를 보다보면 
거의 싱글톤 패턴을 사용하며 권장하고 있습니다.

여러 커뮤니티에서 싱글톤패턴은 사용하면 안좋은점이 많고 사용하지 말아야 할 문제점 처럼 이야기 하는것을 보게되었는데
실질적으로 사용을 피해야하는 안좋은 코딩 방법인지, 사용한다면 개발하는데 제한이 있는 장르가 생기는지 궁금합니다.

답변 1

2

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

싱글톤이 굳이 필요하지 않은 상황임에도 '너무' 남발하는 것은 좋지 않고
객체 간의 생명주기가 꼬일 수가 있긴 합니다.
그러나 클라 개발할 때 UI,  Resources, Sound, Scene 등 핵심 기능들은
서로 아무런 연관성이 없고 불시에 그 기능을 사용해야 할 때가 많습니다.
(실제로 유니티 엔진 자체에서도 관련 기능들을 static 함수로 제공하고 있죠)

따라서 이런 매니저 류의 클래스들은 싱글톤으로 가지 않을 이유가 전혀 없습니다.
특히 게임쪽은 사양 변화가 매우 심한 분야이기 때문에
아무리 설계를 완벽하게 잡아도 언제 대공사가 일어날지 모릅니다.
결과적으로 (싱글톤, static, 전역 변수)와 같이 언제 어디서든 꺼내 사용할 수 있게
만드는 편이 개발 속도 측면에서도 유리하고 속편합니다.

다 그렇진 않겠지만, 커뮤니티에서는 과시욕이 강한 어린 학생들이 많기에
그쪽 말은 100% 신용하면 됩니다.
싱글톤은 사용하면 죄악인 것처럼 얘기를 하지만,
막상 뭐가 문제라 생각하는지 궁금해서 물어보면
[어디선가 들었다~]라거나 [멀티쓰레드 환경에서 안전하지 않다!] 와 같은
전혀 생뚱맞은 답변이 달리는 것으로 미루어 보아
문제의 본질을 제대로 파악하지 못하는 분들이 많다는 것을 알 수 있었습니다.
그리고 결정적으로 제가 본 대부분의 큰 프로젝트에서는
싱글톤/전역변수를 이용해 전체 코드를 관리하는 부분이 '어딘가에는' 있었습니다.
여담인데 객체지향이 막 핫하게 뜨던 초창기에는,
프로그래머들이 클래스 개수를 늘릴 수록 잘하는거라는 미신(?)이 있어서
코드의 class 개수가 몇 개인지 갖고 논쟁하고 그랬다더군요.


결과적으로 게임 개발할 때
-- 1) 성능이 잘 나오고
-- 2) 버그없이 코드가 잘 굴러가고
-- 3) 개발 속도가 잘 확보된다면
나머지 부가적인 논쟁은 큰 의미가 없다고 봅니다.

황라윤님의 프로필 이미지
황라윤
질문자

답변 감사드립니다. 답변 해주신대로 명쾌한 이유가 없어서 사용해야하나 말아야하나 고민이 많았었는데 걱정없이 프로젝트 진행 할 수 있을거같습니다

황라윤님의 프로필 이미지
황라윤

작성한 질문수

질문하기