# BT12-MVP-A Phase 2-B — PD Editor 직접 가이드 (B Prefab + C Scene 통합) **작성**: 총괄PM (dev-team-lead Phase 1 보고서 §1-3·§2 인용) **일자**: 2026-05-08 **대상**: PD Editor 영역 직접 작업 **범위**: SkillSelectionCanvas.prefab + Ingame.unity Scene 통합 --- ## 0. 배경 BT12-MVP-A Phase 2-B 잔여 3 영역 중: - **A. asset 5장** = ✅ 완료 (EerieVillage commit `755a51c` 영역) - **B. SkillSelectionCanvas.prefab** = 본 가이드 §2 - **C. Scene 통합** = 본 가이드 §3 dev-team-lead Phase 1 권고 = B·C 영역 PD Editor 직접 (Unity Editor 시각 검증·layout 정밀 영역). yaml 직접 Write = 회귀 위험 큼·비권고. --- ## 1. 사전 환경 점검 | 점검 | 정합 | |------|------| | EerieVillage 영역 git pull (commit `755a51c`까지) | 의무 | | Unity Editor 영역 EerieVillage 프로젝트 열기 | 의무 | | Asset Refresh (Ctrl+R) | 의무 — asset 5장 import 확증 | | Console 영역 error 0건 | 의무 | | Project 패널 영역 `Assets/Data/SkillPlaceholders/` 영역 5장 표시 정합 | 검증 | --- ## 2. B 영역 — SkillSelectionCanvas.prefab 작성 ### 2-1. 신규 Prefab 생성 1. Project 패널 → `Assets/Prefabs/UI/` 폴더 우클릭 → Create → Prefab Variant 또는 Create Empty Prefab 2. 파일명: `SkillSelectionCanvas` 3. 더블클릭 → Prefab 편집 모드 ### 2-2. Hierarchy 구조 (dev-team-lead §1-3 정합) ``` SkillSelectionCanvas (root) ├ Canvas (Screen Space - Overlay·Sort Order=200) ├ CanvasScaler (Scale With Screen Size·1080×1920·Match=0.5) ├ GraphicRaycaster ├ SkillSelectionUI (script·MyUI namespace) │ └ SkillSelectionPanel (자식) ├ Image (반투명 검정 r:0 g:0 b:0 a:0.78) ├ RectTransform (stretch-stretch·offset 0,0,0,0) │ ├── Header │ ├ TitleText (TextMeshProUGUI·"기술 선택"·48pt·Bold·Center) │ └ CloseButton (Button + Image + TextMeshProUGUI "✕") │ ├── CardArea (HorizontalLayoutGroup·spacing 40) │ ├ SkillCardSlot1 (자식 8개·아래 §2-3 영역) │ ├ SkillCardSlot2 │ └ SkillCardSlot3 │ └── Footer ├ PointText (TextMeshProUGUI·"남은 포인트: 1") └ ConfirmButton (Button + TextMeshProUGUI "확인") ``` ### 2-3. SkillCardSlot 자식 영역 (3 슬롯 동일) 각 SkillCardSlot 영역 8 자식 + SkillCardSlot 스크립트 부착: 1. **TopBanner** (Image) — 상단 색상 배너 (등급별 자동 변경) 2. **NameText** (TextMeshProUGUI) — 카드 이름 한글 3. **IconArea** (GameObject 부모) - **GlowEffect** (Image) — 동심원 빛 - **Icon** (Image) — 원형 아이콘 4. **LevelText** (TextMeshProUGUI) — "레벨 N" 또는 "최대" 5. **DescriptionText** (TextMeshProUGUI) — 효과 설명 3~4 라인 6. **ClickArea** (Button) — 전체 카드 영역 stretch 7. **HighlightFrame** (Image·기본 inactive) — 선택 시 활성 ### 2-4. SkillSelectionUI 스크립트 영역 reference 매핑 Inspector 영역 SkillSelectionUI component 영역 다음 18 field 영역 reference 매핑: | Field | 매핑 대상 | |-------|---------| | `_rootPanel` | SkillSelectionPanel GameObject | | `_titleText` | Header → TitleText | | `_closeButton` | Header → CloseButton | | `_slot1` | CardArea → SkillCardSlot1 | | `_slot2` | CardArea → SkillCardSlot2 | | `_slot3` | CardArea → SkillCardSlot3 | | `_pointText` | Footer → PointText | | `_confirmButton` | Footer → ConfirmButton | ### 2-5. SkillCardSlot 스크립트 영역 reference 매핑 (각 3 슬롯) | Field | 매핑 대상 | |-------|---------| | `_topBanner` | TopBanner | | `_nameText` | NameText | | `_glowEffect` | IconArea → GlowEffect | | `_icon` | IconArea → Icon | | `_levelText` | LevelText | | `_descriptionText` | DescriptionText | | `_clickArea` | ClickArea (Button) | | `_highlightFrame` | HighlightFrame | ### 2-6. 색상 영역 default (PD 예시 정합·SkillCardSlot.cs:34-36) - Common 청록 = (0.30, 0.70, 0.70, 1.0) - Rare 노랑 = (0.95, 0.70, 0.25, 1.0) - Max 빨강 = (0.90, 0.30, 0.30, 1.0) ### 2-7. Sprite placeholder 영역 현 시점 sprite asset 부재 → 다음 fallback: - 카드 배경 = Unity 기본 white sprite + 색상 변경 또는 9-slice null - 원형 아이콘 = Unity 기본 `Knob` sprite 또는 `UISprite` fallback - 동심원 빛 = sprite null → `_glowEffect.enabled = false` (SkillCardSlot.cs 영역 자동 처리) - 아이콘 영역 자체 = `{fileID: 0}` (asset 영역 정합) → `_icon.enabled = false` 자동 ### 2-8. Prefab 저장 1. Prefab 편집 모드 → Save (Ctrl+S) 2. Project 패널 영역 `Assets/Prefabs/UI/SkillSelectionCanvas.prefab` 정합 확증 --- ## 3. C 영역 — Scene `Ingame.unity` 통합 ### 3-1. Scene 열기 1. Project → `Assets/Scenes/Ingame.unity` 더블클릭 2. Hierarchy 영역 기존 GameObject 카탈로그 확증 (Player·Enemies·Foreground·IngameCanvas 등) ### 3-2. `[LevelUpManager]` GameObject 추가 1. Hierarchy 영역 root level 우클릭 → Create Empty 2. 이름: `[LevelUpManager]` 3. position: 0, 0, 0 ### 3-3. LevelUpManager 컴포넌트 부착 1. `[LevelUpManager]` 선택 → Inspector → Add Component 2. `LevelUpManager` 검색 → 부착 3. Inspector 영역 field 매핑: - `_pool`: 자식 SkillCardPool 영역 (다음 §3-4 영역) - `_ui`: Scene 영역 SkillSelectionCanvas 인스턴스 영역 SkillSelectionUI component (다음 §3-5 영역) ### 3-4. SkillCardPlaceholderPool 컴포넌트 부착 1. `[LevelUpManager]` 영역 자식 GameObject 생성 또는 동일 GameObject 영역 Add Component 2. `SkillCardPlaceholderPool` 검색 → 부착 3. Inspector 영역 `_allCards` (List) 영역: - Element 0 → Project 영역 `A01_jineonbu.asset` drag - Element 1 → `A05_hagikjin.asset` - Element 2 → `P01_bonghwanggyeok.asset` - Element 3 → `P12_saengmyeongkkot.asset` - Element 4 → `AW01_cheonbugyeongmun.asset` ### 3-5. SkillSelectionCanvas Prefab 인스턴스 추가 1. Project → `Assets/Prefabs/UI/SkillSelectionCanvas.prefab` Hierarchy 영역 root level drag 2. 인스턴스 이름: `SkillSelectionCanvas` (자동) 3. 인스턴스 영역 SkillSelectionUI component 영역 자동 정합 (Prefab 영역 reference 매핑 정합) ### 3-6. LevelUpManager `_ui` field reference 매핑 1. `[LevelUpManager]` 선택 → Inspector → LevelUpManager component 2. `_ui` field → Hierarchy 영역 SkillSelectionCanvas 인스턴스 → SkillSelectionUI component drag ### 3-7. Scene 저장 1. File → Save Scene (Ctrl+S) 2. Project 영역 `Ingame.unity` 영역 변경 확증 --- ## 4. 검증 영역 ### 4-1. Editor 영역 시각 검증 - Hierarchy 영역 `[LevelUpManager]` + SkillSelectionCanvas 정합 표시 - Inspector 영역 LevelUpManager `_pool`·`_ui` 정합 매핑 표시 - Inspector 영역 SkillCardPlaceholderPool `_allCards` 5장 표시 - Inspector 영역 SkillSelectionUI 18 field 정합 매핑 표시 - Inspector 영역 SkillCardSlot ×3 영역 8 field 각 정합 매핑 표시 ### 4-2. Play 영역 검증 1. Play 버튼 2. 기존 게임플레이 정합 (Player·Enemy·Foreground 영역 회귀 X 확증) 3. 적 처치 → Console 영역 출력: - `[ExperienceSystem] OnEnemyKilled: +5 XP` - `[PlayerProgression] GainXP: 5` 4. 누적 XP 영역 LevelXPTableLoader 영역 임계 도달 시: - `[LevelUpManager] HandleLevelUp Lv.2` - 화면 영역 SkillSelectionCanvas 표시 (3 카드 노출) - Time.timeScale = 0 (게임 일시정지) - 카드 클릭 → highlight 표시 - 확인 버튼 → SkillSelectionCanvas Hide·Time.timeScale = 1·게임 재개 ### 4-3. 회귀 검증 (Phase 1 §5-1 영역 정합) | 기존 영역 | 영향 X 확증 | |------|------| | Enemy 16 인스턴스 patrol | ✅ 정합 | | Player 컨트롤 | ✅ 정합 | | Foreground·Background·Tilemap | ✅ 정합 | | 기존 IngameCanvas/IngameUI/IngameChoiceSkillUI | ✅ 별도 root Canvas (Sort Order 분리) | | BT7-Dev 자동 발동 영역 (Time.timeScale 영역) | 검증 의무 (Phase 3 영역) | --- ## 5. 회귀 위험 영역 | 영역 | 등급 | 대응 | |------|------|------| | 신규 GameObject root level 추가 | 낮음 | 기존 fileID 영향 X | | SkillSelectionCanvas Prefab 인스턴스 추가 | 낮음 | 신규 root Canvas | | Time.timeScale = 0 영역 BT7-Dev 자동 발동 | 중 | Phase 3 영역 검증 | | Player.prefab 영역 PlayerProgression 명시 부착 | X | 자동 부착 영역 (PlayerController.Awake cs:95-97) — 변경 불필요 | | EnemyDeath ExperienceSystem hook | X | Phase 2-A 영역 정착 | | Scene `Ingame.unity` 영역 320,819 라인 영역 | 낮음 | 신규 추가만·기존 변경 X | --- ## 6. 후속 영역 ### 6-1. PD 직접 작업 완료 후 1. Unity Editor 영역 Scene 저장 (`Ingame.unity`) 2. Prefab 저장 (`SkillSelectionCanvas.prefab`) 3. EerieVillage 영역 git status 확증: - `Assets/Prefabs/UI/SkillSelectionCanvas.prefab` (신규) - `Assets/Prefabs/UI/SkillSelectionCanvas.prefab.meta` (신규) - `Assets/Scenes/Ingame.unity` (수정) 4. PD 또는 PM 영역 commit·push (BT12-MVP-A Phase 2-B Editor 통합) ### 6-2. Phase 3 dev-team-lead 검증 - BT12-MVP-A 통합 검증 (Phase 1 + 2-A + 2-B asset + 2-B Editor 통합) - 회귀 영역 (BT5-Dev·BT7-Dev·기존 IngameCanvas) 영역 영향 X 확증 - 60종 카드 효과 영역 (BT12-Dev 본격) 영역 진행 영역 결정 ### 6-3. icon sprite asset 영역 차기 - placeholder sprite 5장 영역 (하트·검·방패·바람·달 등) 별도 영역 작업 - 5 asset 영역 icon field 영역 sprite reference 매핑 --- ## 7. 관련 자료 - **Phase 1 설계서**: [BT12-MVP-A_설계_v1.md](BT12-MVP-A_설계_v1.md) §2 신규 컴포넌트·§5 UI Prefab 구조·§7 Phase 영역 - **dev-team-lead Phase 1 분석 보고서**: 본 세션 직전 호출 결과 (대화로그 영역 영구 보존) - **EerieVillage commit `755a51c`**: BT12-MVP-A Phase 2-B asset 5 정착 - **EerieVillage commit `5b2b753`**: Phase 2-B 코드 (UI 컴포넌트 2 + LevelUpManager 통합) - **EerieVillage commit `047661c`**: Phase 2-A 시스템 코드 + JSON 테이블 --- **본 가이드 작성 = 총괄PM**·dev-team-lead Phase 1 권고 정합·PD Editor 직접 영역 단계별 절차 영역.