BurningTimesAi/공유/대화로그/FirstRising/2026-09-23_UI작업_인수인계.md

99 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FirstRising UI 작업 인수인계 (2026-09-23 · BT18)
다음 세션에서 **UI 작업을 이어서** 하기 위한 문서. 이 문서 하나만 읽으면 바로 이어갈 수 있게 적었다.
---
## 0. 지금 상태 한 줄
하단 HUD 와 인벤토리 패널의 **배치까지 끝났고 기능 연결은 시작 전**. 저장소는 `origin/bt/work` = `origin/master` = **`50a206aadc`**, 미커밋 변경 0건.
## 1. 저장소 · 실행 환경
| 항목 | 값 |
|---|---|
| 프로젝트 | `C:\BurningTimes\FirstRising` |
| 브랜치 | `bt/work` (master 와 동일 커밋) |
| 최신 커밋 | `50a206aadc` 인벤토리 패널 |
| Unity | 6000.3.9f1 · CLI 포트 7800 |
| 게임 뷰 | 1280×720 (평가할 때만 `PlayModeWindow.SetCustomRenderingResolution(2160,3840)` 로 키우고 **끝나면 1280×720 으로 원복**) |
Play 진입 후 로비가 뜨기까지 **90초 이상** 걸린다. 캡처 보조 스크립트는 세션 스크래치패드의 `shot.sh` 참고(없으면 `editor_stop → editor_play → 대기 → capture_game_view --source screen` 순서).
## 2. 지켜야 할 규칙 (PD 지시)
1. **스크립트는 `Lobby/LobbyPlayScene/BT_Visual` 노드에만** 컴포넌트로 붙인다. 여기저기 만들지 않는다.
2. **게임 원본 프리팹은 수정하지 않는다.** 필요하면 우리 폴더로 **복사해서 사본만** 고친다.
3. **자잘한 결함은 묻지 말고 바로 고친다.** 승인이 필요하면 예고가 아니라 **질문**으로 끝낸다.
4. **작업이 끝나기 전에 턴을 끝내지 않는다.** "이어서 하겠습니다" 하고 멈추지 않는다.
5. 커밋·푸시는 **PD 지시가 있을 때만**.
6. 보고는 한국어·간결·경어, 호칭 **PD님**.
## 3. 함정 — 이것 때문에 시간을 많이 썼다
- **`Lobby.unity` 의 프리팹 오버라이드가 `LobbyPlayScene.prefab` 값을 덮는다.**
수치를 바꾸면 **프리팹과 씬 양쪽에 함께** 넣어야 한다. 프리팹만 고치면 반영되지 않는다.
(오버라이드가 걸려 있는 필드: `bagSize` `bagCenterY` `bagRightMargin` `iconScale` `bagIconScale` `autoLabelSize` `rowCenterX` `slotReady` `slotCooldown` 등)
- **에디터 eval 은 메인 스레드 5초 제한.** 프리팹·씬을 여는 작업은 반드시 `--detach` 로 돌리고 결과를 파일로 받는다.
- **eval 안에서 `Object` 는 모호하다.** `UnityEngine.Object.DestroyImmediate` 처럼 풀네임을 쓴다.
- **Play 중에는 `EditorSceneManager.OpenScene` 이 막힌다.** 씬을 고치기 전에 `editor_stop`.
- **캡처는 항상 1280×720 으로 나온다.** 세로 렌더(2160×3840)를 캡처하면 가로로 늘어나므로, 판정 전에 `resize((720,1280))` 로 되돌리고 봐야 한다.
- 캡처를 `Assets/` 안에 저장하면 프로젝트가 더러워진다. 쓰고 나면 지운다.
## 4. 이번 세션에 만든 것
### 4-1. 하단 HUD — `TVHudBar` · `TVSkillBar` · `TVBottomMenu` · `TVViewportScaler` · `TVCameraFocus`
- 아트는 **Blender 절차 생성**(`bl_hud.py`, 세션 스크래치패드). 좌 가고일·우 천사 구슬 소켓, 경험치 프레임, 레벨 육각판, 슬롯·원형 테두리를 어두운 철 + 금 한 가지 재질로 통일. 구슬 안쪽은 바닥·액체·광택 3겹(`make_orb_layers.py`)
- 모든 UI 는 **위젯 영역(`CenterHolder`) 안**에 들어간다. `TVViewportHost.Create` 로 1080 기준 좌표계를 만들고 `TVViewportScaler` 가 폭에 맞춰 배율을 잡는다
- **최소화(배경 투명) 모드** — 하단 주요 메뉴만 숨고 HUD 는 보인다
- `TVCameraFocus` — 성장 등 페이지가 열려 게임 화면이 짧아지면 카메라 높이를 고쳐 **캐릭터 몸통 중앙을 화면 세로 0.62** 에 맞춘다(기준점은 발밑이 아니라 원점 +0.83). 페이지를 닫으면 원래 값으로 복귀
- 배치(1080 기준): 띠 중심 256 · 메뉴 높이 140 · 상단 줄 316 · 자동/회피 192
### 4-2. 인벤토리 — `TVInventoryPanel` + `TV_ItemBagPopUp.prefab`
- 원본 `Assets/UI/ItemBagPopUp.prefab` → 사본 `Assets/BurningTimes/Visual/Prefabs/TV_ItemBagPopUp.prefab`
- 사본에서 `ItemBagPopupUI`(게임 페이지 스크립트)와 `RandomBoxPopUp`·`SelectBoxPopUp` 제거 → 배치용
- 창 700×1240 · 제목 · 탭 3개(가방/창고/짐꾼) · 정렬 · 134/150 · 제작(청색)·판매(황동색) · 칸 7×10=70 · 마지막 칸이 확장(+)
- 칸 배율은 **`ItemSlotBG` 폭(100) 기준**으로 잡아야 칸을 꽉 채운다. 가장 큰 자식(발광 140) 기준으로 잡으면 슬롯이 작아지고 간격이 벌어져 보인다
- 가방 버튼(`TVSkillBar.OpenInventory`)이 `TVInventoryPanel.Toggle()` 을 부른다
### 4-3. 함께 고친 결함
- 위젯 모드 자동 공격 — 사거리 밖이면 쏘지 않게 `holdFireWithoutTarget` 을 켜고 위젯 제외 조건 삭제
- 콘솔 NRE 8건 — 엔티티 질의를 **World 단위로 다시 만들도록** 6종 수정
- 공유 diff 정리 — Packages·ProjectSettings·gradle·폰트 SDF 는 커밋하지 않고 원복, `/output`·`/Assets/_Recovery` 무시 목록 추가
## 5. 다음에 할 일 (우선순위)
1. **인벤토리 기능 연결** — 탭 전환(가방/창고/짐꾼) · 정렬 · 제작 · 판매 · 확장(+) · 실제 아이템 목록 표시
2. **HUD 기능 연결** — HP·경험치·레벨·포션 수량을 게임 데이터에 붙인다(지금은 고정 표현값)
3. 위젯 자동 이동·자동 전투 (PD 분류 신규 안건)
4. §4 기술 부채 2·3단계 — `Find`/`GetComponentsInChildren` 캐싱, 역할 분리
## 6. 확인하지 못한 것
- 다른 PC 클론에서 `BT_Visual` 스크립트가 missing 으로 보인다는 보고가 있었다. 저장소는 파일 단위로 검증했고 빠진 것이 없다(`.cs`+`.cs.meta` GUID 가 프리팹 참조와 일치). **그 클론의 브랜치와 Library 캐시를 확인**해야 한다.
- 같은 클론의 `BatchDrawCommand ... MeshID: ("<null>")` 에러도 셰이더 문제가 아니었다(해당 머티리얼 4종 모두 URP/Lit 또는 그 사본인 `TV2_FadeLit`). 임포트·베이크가 덜 된 상태로 보인다.
---
## 7. 다음 세션 첫 프롬프트 (그대로 붙여 넣기)
```
FirstRising UI 작업을 이어서 진행한다.
먼저 E:\BurningTimes\공유\대화로그\FirstRising\2026-09-23_UI작업_인수인계.md 를 읽어라.
다른 문서는 열지 마라.
작업 규칙
- 스크립트는 BT_Visual 노드에만 컴포넌트로 붙인다
- 게임 원본 프리팹은 수정하지 말고 복사본을 만들어 쓴다
- 자잘한 결함은 묻지 말고 바로 고쳐라
- 작업이 끝나기 전에 턴을 끝내지 마라. 승인이 필요하면 질문으로 끝내라
- 커밋·푸시는 내가 지시할 때만
- 보고는 한국어·간결·경어, 호칭은 PD님
이번 작업: 인벤토리 기능 연결 — 탭 전환·정렬·제작·판매·확장(+)·실제 아이템 목록
```