BurningTimesAi/프로젝트/EerieVillage/개발/spec/BT12-MVP-A_Phase2B_PDEditor...

10 KiB
Raw Blame History

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 §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 직접 영역 단계별 절차 영역.