UI 구조 — 축소 초상 아틀라스 = 모든 영웅 리소스 제작 완료 후 진행(#1107 · PD 2026-11-10 결정)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-11-10 08:19:26 +09:00
parent 8aa804168f
commit 1b28807067
1 changed files with 1 additions and 1 deletions

View File

@ -69,7 +69,7 @@ UI 를 새로 만들거나 고칠 때 **반드시** 이 구조를 따른다(어
- **매 프레임 호출되는 갱신 코드**는 값이 같으면 쓰지 않는다(`sizeDelta`·`anchoredPosition`·`CanvasGroup.alpha/interactable` 비교 후 대입 · `Text.text`·`Graphic.color` 는 Unity 가 이미 비교). - **매 프레임 호출되는 갱신 코드**는 값이 같으면 쓰지 않는다(`sizeDelta`·`anchoredPosition`·`CanvasGroup.alpha/interactable` 비교 후 대입 · `Text.text`·`Graphic.color` 는 Unity 가 이미 비교).
- **아틀라스**: 구성 SOT = `Assets/Data/UI/ui_atlas.csv`(theme 줄 = UI 테마가 쓰는 스프라이트를 경로 match 로 · folder 줄 = 폴더 통째 · `single_area` 보다 큰 그림 = 묶지 않음) → `Editor/UIAtlasBuilder` → `Assets/UI/Atlases/*.spriteatlasv2`(UI_Common 4096×2048 · UI_Content 2048×2048 · WorldMap_UI 1024×1024 · 각 1장). **UI 테마 임포트가 끝날 때마다 자동 갱신**(새 납품 스프라이트 = 코드·표 변경 없이 묶임) · 수동 = 메뉴 `TKS/Build UI Atlases (UI 아틀라스 갱신)`. 패커 = Sprite Atlas V2(에디터 Play 에서도 묶임 · `EditorSettings` m_SpritePackerMode 5). 사각 묶음(Tight 끔 · 회전 끔 — 9-slice·Filled 보존). **스프라이트를 잘라 새로 만드는 코드는 `sprite.packed ? sprite.textureRect : sprite.rect`**(`UISkin.WorldSprite` 참고 · `rect` 는 원본 기준). - **아틀라스**: 구성 SOT = `Assets/Data/UI/ui_atlas.csv`(theme 줄 = UI 테마가 쓰는 스프라이트를 경로 match 로 · folder 줄 = 폴더 통째 · `single_area` 보다 큰 그림 = 묶지 않음) → `Editor/UIAtlasBuilder` → `Assets/UI/Atlases/*.spriteatlasv2`(UI_Common 4096×2048 · UI_Content 2048×2048 · WorldMap_UI 1024×1024 · 각 1장). **UI 테마 임포트가 끝날 때마다 자동 갱신**(새 납품 스프라이트 = 코드·표 변경 없이 묶임) · 수동 = 메뉴 `TKS/Build UI Atlases (UI 아틀라스 갱신)`. 패커 = Sprite Atlas V2(에디터 Play 에서도 묶임 · `EditorSettings` m_SpritePackerMode 5). 사각 묶음(Tight 끔 · 회전 끔 — 9-slice·Filled 보존). **스프라이트를 잘라 새로 만드는 코드는 `sprite.packed ? sprite.textureRect : sprite.rect`**(`UISkin.WorldSprite` 참고 · `rect` 는 원본 기준).
- **검증**: `-executeMethod TKS.EditorTools.DataImporter.CaptureUI` 캡처 로그에 화면마다 `layers <화면> batches=… canvases=루트+중첩 … frameRebuildGraphics=…` 줄 + `ui_layers.csv`(캔버스별 그래픽 수 · 등급 · 레이캐스터 · 매 프레임 요소 여부 · `Runtime/UI/UiLayerProbe`). 2026-11-10 개선 전→후(13화면 · 1080×1920) = 배치 합계 1124 → 439 · 평상시 매 프레임 재구성 그래픽(전투 HUD 49 → 10 · 월드맵 241 → 1 · 보물 상자 115 → 2 · 전투 결과 115 → 14). - **검증**: `-executeMethod TKS.EditorTools.DataImporter.CaptureUI` 캡처 로그에 화면마다 `layers <화면> batches=… canvases=루트+중첩 … frameRebuildGraphics=…` 줄 + `ui_layers.csv`(캔버스별 그래픽 수 · 등급 · 레이캐스터 · 매 프레임 요소 여부 · `Runtime/UI/UiLayerProbe`). 2026-11-10 개선 전→후(13화면 · 1080×1920) = 배치 합계 1124 → 439 · 평상시 매 프레임 재구성 그래픽(전투 HUD 49 → 10 · 월드맵 241 → 1 · 보물 상자 115 → 2 · 전투 결과 115 → 14).
- **남은 드로우콜 원인**(2026-11-10 실측): 영웅 목록(72)·편성(120) = 유닛 초상(유닛 아트 프레임 797×826 · 유닛마다 다른 텍스처라 카드마다 끊김) — 목록용 축소 초상 아틀라스는 PD 결정 대기. - **남은 드로우콜 원인**(2026-11-10 실측): 영웅 목록(72)·편성(120) = 유닛 초상(유닛 아트 프레임 797×826 · 유닛마다 다른 텍스처라 카드마다 끊김) — 목록용 축소 초상 아틀라스 = **모든 영웅 리소스 제작이 끝난 뒤 진행**(PD 2026-11-10 결정 · 그 전에는 만들지 않는다).
- 같은 PC 의 다른 세션도 `E:\Nerdnavis\_tks_verify` 를 캡처에 쓴다 → 사본은 세션마다 따로(예 `Tools/mirror_verify.py <본체> E:/Nerdnavis/_tks_verify_ui`) · 남이 돌리는 사본에 미러하지 않는다(실행 중 코드가 바뀜). - 같은 PC 의 다른 세션도 `E:\Nerdnavis\_tks_verify` 를 캡처에 쓴다 → 사본은 세션마다 따로(예 `Tools/mirror_verify.py <본체> E:/Nerdnavis/_tks_verify_ui`) · 남이 돌리는 사본에 미러하지 않는다(실행 중 코드가 바뀜).
## 스킬 이펙트 작업 (2026-11-09 PD 「WL 에서 스킬을 구현하던 방식과 동일하게 유닛별 스킬 구현」 · 이 PC = 연출 담당) ## 스킬 이펙트 작업 (2026-11-09 PD 「WL 에서 스킬을 구현하던 방식과 동일하게 유닛별 스킬 구현」 · 이 PC = 연출 담당)