6.8 KiB
6.8 KiB
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 지시)
- 스크립트는
Lobby/LobbyPlayScene/BT_Visual노드에만 컴포넌트로 붙인다. 여기저기 만들지 않는다. - 게임 원본 프리팹은 수정하지 않는다. 필요하면 우리 폴더로 복사해서 사본만 고친다.
- 자잘한 결함은 묻지 말고 바로 고친다. 승인이 필요하면 예고가 아니라 질문으로 끝낸다.
- 작업이 끝나기 전에 턴을 끝내지 않는다. "이어서 하겠습니다" 하고 멈추지 않는다.
- 커밋·푸시는 PD 지시가 있을 때만.
- 보고는 한국어·간결·경어, 호칭 PD님.
3. 함정 — 이것 때문에 시간을 많이 썼다
Lobby.unity의 프리팹 오버라이드가LobbyPlayScene.prefab값을 덮는다. 수치를 바꾸면 프리팹과 씬 양쪽에 함께 넣어야 한다. 프리팹만 고치면 반영되지 않는다. (오버라이드가 걸려 있는 필드:bagSizebagCenterYbagRightMarginiconScalebagIconScaleautoLabelSizerowCenterXslotReadyslotCooldown등)- 에디터 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. 다음에 할 일 (우선순위)
- 인벤토리 기능 연결 — 탭 전환(가방/창고/짐꾼) · 정렬 · 제작 · 판매 · 확장(+) · 실제 아이템 목록 표시
- HUD 기능 연결 — HP·경험치·레벨·포션 수량을 게임 데이터에 붙인다(지금은 고정 표현값)
- 위젯 자동 이동·자동 전투 (PD 분류 신규 안건)
- §4 기술 부채 2·3단계 —
Find/GetComponentsInChildren캐싱, 역할 분리
6. 확인하지 못한 것
- 다른 PC 클론에서
BT_Visual스크립트가 missing 으로 보인다는 보고가 있었다. 저장소는 파일 단위로 검증했고 빠진 것이 없다(.cs+.cs.metaGUID 가 프리팹 참조와 일치). 그 클론의 브랜치와 Library 캐시를 확인해야 한다. - 같은 클론의
BatchDrawCommand ... MeshID: ("<null>")에러도 셰이더 문제가 아니었다(해당 머티리얼 4종 모두 URP/Lit 또는 그 사본인TV2_FadeLit). 임포트·베이크가 덜 된 상태로 보인다.
7. 다음 세션 첫 프롬프트 (그대로 붙여 넣기)
FirstRising UI 작업을 이어서 진행한다.
먼저 E:\BurningTimes\공유\대화로그\FirstRising\2026-09-23_UI작업_인수인계.md 를 읽어라.
다른 문서는 열지 마라.
작업 규칙
- 스크립트는 BT_Visual 노드에만 컴포넌트로 붙인다
- 게임 원본 프리팹은 수정하지 말고 복사본을 만들어 쓴다
- 자잘한 결함은 묻지 말고 바로 고쳐라
- 작업이 끝나기 전에 턴을 끝내지 마라. 승인이 필요하면 질문으로 끝내라
- 커밋·푸시는 내가 지시할 때만
- 보고는 한국어·간결·경어, 호칭은 PD님
이번 작업: 인벤토리 기능 연결 — 탭 전환·정렬·제작·판매·확장(+)·실제 아이템 목록