클래스 이름 짓기 [ 2편 ] + MVC 패턴
·
유니티(Unity)/이론 정리
게임 개발을 하다 보면 클래스 명명을 어떻게 해야할 지 모를 때가 많습니다. 이번 2편에서는 다소 친숙한 클래스 이름들을 살펴보고, 각 이름들이 어떤 역할을 수행하는 지 알아보도록 하겠습니다. Manager Manager: 특정 시스템이나 여러 관련 기능을 책임지는 관리자 클래스 Manager는 특정 시스템이나 기능을 총괄하기 역할을 수행합니다. 보통 전역에서 접근 가능하게 설계되어(Singleton) 다양한 클래스나 시스템 간의 중재자 역할을 수행합니다. 예를 들어, Monster 클래스 내 Dead 함수에서 죽는 소리를 출력해야할 때, Monster는 SoundManager에게 죽는 소리를 요청하는 형태가 될 수 있습니다. 사용 예시GameManager: 게임의 주요 흐름을 관리하는 매니저입니다. 주..
클래스 이름 짓기 [ 1편 ]
·
유니티(Unity)/이론 정리
게임 개발을 하다 보면 객체의 역할에 따른 명명을 어떻게 해야할 지 모르는 경우가 많다. 협업 프로젝트를 열어 클래스들의 이름을 살펴보면, "Wrapper", "Dispatcher", "Helper", "Manager"로 끝나는 클래스들이 있을 수 있다. 이러한 클래스들은 어떤 역할을 하는지, 그리고 협업을 위해서 어떻게 명명하면 좋은지 알아보도록 하자.생각보다 내용이 길어질 것 같아 편을 나눠서 작성하겠습니다. Wrapper Wrapper: 라이브러리나 API의 인터페이스를 단순화, 혹은 복잡한 시스템을 캡슐화하는 클래스 Wrapper 용어는 "감싸다(Wrap)"라는 의미를 가지고 있다. 즉, 이미 존재하던 Original에 새로운 필드나 메소드, 이벤트 처리, 에러 감지 등 새로운 시스템을 추가하여 ..
에셋 번들(Asset Bundle) 이론 정리
·
유니티(Unity)/이론 정리
Unity 에셋 번들은 게임의 리소스를 효율적으로 관리하고 최적화하는 데 중요한 역할을 한다. 특정 리소스를 에셋 번들로 묶어 필요할 때만 다운로드하고 로드함으로써 메모리 사용을 줄이고 게임 로딩 속도를 개선할 수 있다. 현업에서 중요한 기술 중 하나이므로 에셋 번들에 대해 알아보도록 하겠다. 에셋 번들(Asset Bundle)이란? 에셋 번들: 여러 에셋들을 하나로 묶어 주는 파일 포맷 유명한 모바일 게임들을 다운해본 적이 있는가?이때 바로 플레이가 가능하지 않고 패치가 시작된다.그 이유는 에셋 번들을 다운로드하기 때문이다. 에셋 번들 없이 게임을 빌드한다면?게임 용량이 엄청 커지고, 에셋이 변경될 때마다 매번 에셋 전체를 다운받아야 해서 비효율적이다.그래서 모바일 게임은 에셋 번들이 필수이다.   에..
싱글톤(Singleton) 패턴
·
유니티(Unity)/이론 정리
싱글톤 패턴이란?싱글톤 패턴: 특정 클래스의 인스턴스가 단 하나만 생성되는 것을 보장하는 디자인 패턴 Player 및 Monster 같은 경우 여러 개의 인스턴스가 존재할 수 있으니 싱글톤의 대상이 아니다.GM(GameManager) 인스턴스는 씬에서 단 하나만 존재하기 때문에 싱글톤의 대상이다. 아직 감이 오지 않는다면 예를 더 들어보겠다.어떤 게임에 Stage 클래스와 StageManager 클래스가 있다고 가정하자.이때, Stage는 스테이지 데이터 및 행동 관리 클래스이며 StageManager는 Stage를 관리하는 클래스이다.Stage는 게임에 여러 개로 존재할 수 있으므로 싱글톤 패턴을 적용할 수 없다.하지만 StageManager가 10개의 Stage를 관리하는 클래스이며 단 하나만 존재하..
GetComponent 성능
·
유니티(Unity)/이론 정리
Unity를 개발하다보면 잦은 GetComponent 호출은 성능을 크게 떨어뜨린다는 말을 자주 듣습니다. '그렇다면 GetComponent는 얼마나 느릴까요?' 오늘은 이 궁금증을 해결하기 위해 실험을 준비했습니다 :) GetComponent 성능 실험 실험 구성은 다음과 같다. 1. Unity 빈 프로젝트 환경 구성2. 단순 연산을 N번 돌렸을 때, 1ms가 나오는 N을 선택3. Update 함수에서 N번의 GetCompoent 돌려서 성능 체크 바로 시작해보자.  Scene에는 카메라, 직사광선, 그리고 테스트용 스크립트가 있음 테스트용 스크립트에는 특정 액션의 수행 시간을 체크하는 메서드를 보유함 public void MeasurePerformance(Action action, int loopCo..