고도 엔진에서 C# 클래스의 싱글톤 클래스 사용 방법 - Whitmem
고도 엔진에서 C# 클래스의 싱글톤 클래스 사용 방법
Game Development
2025-02-02 00:44 게시 085a74c65c8549bf843c

0
0
57
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
싱글톤 클래스
클래스의 개념이 기본적으로 어떤 설계도라고 친다면, 이 설계도를 이용해서 하나의 제품을 딱 만들어내는 것을 인스턴스화하는 것이라고 표현한다. 이러한 구조를 사용하는 이유는 비슷한 공통 분모끼리 묶은 클래스를 만든 뒤에 여러 개의 인스턴스를 만들어 손 쉽게 시스템을 관리하기 위함인데, 수학 계산 처리, 메모리 처리 등의 경우에는 클래스의 여러 인스턴스가 존재할 필요가 없다. 이런 경우에도 클래스를 만들어 인스턴스를 한 개 만들어야 하는데, 명시적으로 인스턴스가 한 개만 존재한다고 알린 클래스를 싱글톤 클래스라고 볼 수 있다.
즉 하나의 인스턴스만 시스템에 등록하고 해당 인스턴스에 직접 접근해서 사용하기 위해서는, 고도 엔진의 AutoLoad 에 해당 클래스를 등록하고 가져오면 된다.
AutoLoad 는 어떤 노드에 의해 스크립트가 로드 되지 않았더라도 게임이 시작될 때 자동으로 로드되는 클래스를 의미한다.
리소스가 존재하는 파일 시스템 창에 우클릭하고 새 스크립트를 생성한다. 그리고 명칭을 입력한다. 나 같은 경우 메모리를 관리하는 클래스 한 개를 싱글톤으로 정의하고자 하였기에 Memory라는 이름으로 정의하였다.
이 클래스에는 기본적으로 static 이라는 선언문을 사용해서 클래스 인스턴스를 정의하고 그 인스턴스를 가져오는 getInstance()를 만든다. 다만 Memory Instance 변수 자체는 private 로 하는 것이 소프트웨어 설계 관점에서 옳다. 위 코드는 약간 잘못 되었다..
고도 엔진의 오토 로드 시스템에 등록할 것이기 때문에 Ready 공간에 instance가 하나 생성되도록 정의한다. 이 Ready 메서드는 오토 로드에 의해 게임이 시작되면 자동으로 호출될 것 이다.
경로에는 클래스 파일을 정의하고, 노드 이름은 사용하고 싶은 이름을 영어로 정의한다. 보통 클래스 이름과 동일하게 정의된다. 직접 노드 이름을 통해서 리소스를 가져올 수도 있지만 클래스 명칭으로 바로 접근해도 상관 없는 듯 싶다.
이제 메모리라는 클래스는 싱글톤 클래스가 되었다. 사용 하고 싶은 아무런 스크립트에서 Memory.getInstance()를 통해 미리 생성된 하나의 인스턴스에 접근할 수 있다.
위 코드는 DrawCanvas 라는 전혀 관련 없는 새로운 노드의 클래스에서 Memory 객체를 선언하고, 시스템에 미리 로드된 인스턴스를 가져와 사용하는 모습을 나타낸 것이다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.