|
| 1 | + |
| 2 | +# 📁 ProjectVG Unity 클라이언트 구조 가이드 |
| 3 | + |
| 4 | +이 문서는 `Assets/` 디렉토리 기준의 Unity 클라이언트 프로젝트 구조 및 디렉토리 용도/명명 규칙을 설명합니다. |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +## 🗂 전체 구조 |
| 9 | + |
| 10 | +``` |
| 11 | +Assets/ |
| 12 | +├── App/ # 진입점, 전체 앱 설정 |
| 13 | +│ ├── Scenes/ # 메인 씬, 로딩 씬 등 |
| 14 | +│ └── App.cs # 앱 초기화/엔트리 진입 |
| 15 | +
|
| 16 | +├── Core/ # 전역 공통 기능 |
| 17 | +│ ├── Input/ # 입력 처리 (Touch, Mouse, Key 등) |
| 18 | +│ ├── Audio/ # BGM, SFX, 오디오 매니저 |
| 19 | +│ ├── Localization/ # 다국어 지원 |
| 20 | +│ ├── Time/ # 시간 유틸 (타이머, 딜레이 등) |
| 21 | +│ ├── Extensions/ # Unity, LINQ, System 확장 메서드 |
| 22 | +│ └── Utils/ # 범용 유틸리티 클래스 |
| 23 | +
|
| 24 | +├── Infrastructure/ # 외부 서비스, 저장소, 네트워크 |
| 25 | +│ ├── Data/ # 로컬/클라우드 저장소 (SaveData, PlayerPrefs) |
| 26 | +│ ├── Network/ # 서버 API 호출, Response DTO |
| 27 | +│ └── Bridge/ # Native, 외부 SDK 연동 (예: Android, iOS 기능) |
| 28 | +
|
| 29 | +├── Domain/ # 도메인(기능)별 묶음 |
| 30 | +│ ├── Character/ |
| 31 | +│ │ ├── Model/ |
| 32 | +│ │ ├── View/ |
| 33 | +│ │ ├── Script/ |
| 34 | +│ │ └── Animation/ |
| 35 | +│ ├── Chat/ |
| 36 | +│ │ ├── Script/ |
| 37 | +│ │ ├── View/ |
| 38 | +│ │ └── Model/ |
| 39 | +│ ├── Popup/ |
| 40 | +│ │ └── System/ # 팝업 매니저, 팝업 큐 |
| 41 | +│ │ └── Instances/ # 실제 팝업 프리팹들 |
| 42 | +│ └── System/ # 게임 로직 컨트롤러, FSM 등 (선택) |
| 43 | +
|
| 44 | +├── UI/ # UI 공통 요소 |
| 45 | +│ ├── Prefabs/ # 공용 UI 프리팹 (버튼, 아이콘, 툴팁 등) |
| 46 | +│ ├── Panels/ # HUD, 메인패널 등 |
| 47 | +│ ├── Scripts/ # UI 상호작용 스크립트 |
| 48 | +│ ├── Transitions/ # UI 전환 효과 (페이드, 이동 등) |
| 49 | +│ └── Fonts/ # UI 폰트 |
| 50 | +
|
| 51 | +├── Resources/ # Resources.Load() 로드 대상 |
| 52 | +│ ├── Configs/ # Json 기반 설정파일 |
| 53 | +│ └── AddressablesDummy/ # Addressable 사용 안 할 때 대체 |
| 54 | +
|
| 55 | +├── Addressables/ # 어드레서블 관리용 분리 리소스 (선택) |
| 56 | +│ ├── UI/ |
| 57 | +│ ├── Characters/ |
| 58 | +│ └── Scenes/ |
| 59 | +
|
| 60 | +├── Plugins/ # 외부 라이브러리/Live2D SDK |
| 61 | +│ └── Live2D/ |
| 62 | +│ └── CubismSdkForUnity/ |
| 63 | +
|
| 64 | +├── Editor/ # 커스텀 에디터 코드 (.cs만 가능) |
| 65 | +│ └── Inspectors/ |
| 66 | +│ └── PropertyDrawers/ |
| 67 | +│ └── MenuItems/ |
| 68 | +
|
| 69 | +├── Tests/ # 테스트 |
| 70 | +│ ├── Editor/ # Editor Test |
| 71 | +│ └── Runtime/ # PlayMode Test, 유닛 테스트 |
| 72 | +
|
| 73 | +├── Art/ # 디자인 원본 (PSD, AI 등) - 버전 관리 제외 가능 |
| 74 | +
|
| 75 | +└── Docs/ # 문서 (설계, 흐름도, README 등) |
| 76 | +``` |
| 77 | + |
| 78 | +--- |
| 79 | + |
| 80 | +## 📌 네이밍 가이드 요약 |
| 81 | + |
| 82 | +- 디렉토리 및 클래스명: **PascalCase** |
| 83 | +- 변수 및 메서드: **camelCase** |
| 84 | +- JSON 및 설정파일: **snake_case** |
| 85 | +- Addressable 키: `/` 구분, 예: `UI/PanelChat` |
| 86 | +- UI 오브젝트 접두어: `Panel`, `Btn`, `Txt`, `Img`, `Group` 등 |
| 87 | + |
| 88 | +--- |
| 89 | + |
| 90 | +## ✅ 활용 예시 |
| 91 | + |
| 92 | +- `Domain/Character/Model/` → Live2D `.moc3`, `.json`, 모션 설정 |
| 93 | +- `Core/Audio/AudioManager.cs` → SFX, BGM 전역 제어 |
| 94 | +- `Infrastructure/Network/ApiClient.cs` → REST API 통신 처리 |
| 95 | +- `UI/Panels/PanelMain.prefab` → 메인 화면 UI |
| 96 | +- `Tests/Runtime/CharacterMotionTest.cs` → 캐릭터 모션 유닛 테스트 |
| 97 | + |
| 98 | +--- |
| 99 | + |
| 100 | +> 이 문서는 신규 팀원이 구조를 빠르게 이해하고 규칙대로 작업할 수 있도록 작성된 **구조 및 명명 가이드라인**입니다. |
0 commit comments