feat: UI 폰트 시스템 적용 및 HUD 타이포 보정

- 수성바탕체와 마루 부리 기반 UI 폰트 규칙, TMP 에셋 생성, 일괄 적용용 에디터 도구를 추가하고 로비 빌더도 같은 규칙을 따르도록 정리
- 기존 UI 프리팹과 Lobby/Test 씬의 TMP 폰트를 역할별로 교체하고 강조 텍스트와 HUD 계층에 맞는 자간을 반영
- 넥슨 Lv.2 고딕 검토 후 제외하고 액션바, HP/MP, 보스 체력바 숫자와 라벨을 마루 부리 기준으로 재조정
- Assets/_Game/Fonts 경로에 원본 폰트와 TMP 에셋을 정리하고 공유 Obsidian Vault 경로를 AGENTS에 기록
- Unity 리프레시와 HUD 보정 적용 후 콘솔 경고/에러 없는 상태를 확인
This commit is contained in:
2026-03-24 16:43:56 +09:00
parent fe53d90929
commit 829ff77e4b
29 changed files with 51722 additions and 135 deletions

View File

@@ -64,12 +64,12 @@ namespace Colosseum.Editor
vLayout.childForceExpandHeight = false;
connectPanel.AddComponent<ContentSizeFitter>();
CreateLabel(connectPanel.transform, "TitleLabel", "Colosseum Lobby", 36);
CreateLabel(connectPanel.transform, "TitleLabel", "Colosseum Lobby", 36, UIFontRole.Emphasis);
var ipInput = CreateInputField(connectPanel.transform, "IpInput", "Host IP (127.0.0.1)", 300, 50);
var portInput = CreateInputField(connectPanel.transform, "PortInput", "Port (7777)", 300, 50);
var hostBtn = CreateButton(connectPanel.transform, "HostButton", "Host", 200, 50);
var joinBtn = CreateButton(connectPanel.transform, "JoinButton", "Join", 200, 50);
var statusText = CreateLabel(connectPanel.transform, "StatusText", "", 18);
var statusText = CreateLabel(connectPanel.transform, "StatusText", "", 18, UIFontRole.Body);
statusText.color = Color.yellow;
// ── LobbyPanel ────────────────────────────────────────
@@ -87,7 +87,7 @@ namespace Colosseum.Editor
vLayout2.childForceExpandWidth = false;
vLayout2.childForceExpandHeight = false;
CreateLabel(lobbyPanel.transform, "LobbyTitle", "Waiting Room", 32);
CreateLabel(lobbyPanel.transform, "LobbyTitle", "Waiting Room", 32, UIFontRole.Emphasis);
// PlayerList: ScrollView 역할을 하는 VerticalLayout 컨테이너
var playerListGO = new GameObject("PlayerList");
@@ -123,9 +123,10 @@ namespace Colosseum.Editor
slotTmp.text = "Player";
slotTmp.fontSize = 20;
slotTmp.alignment = TextAlignmentOptions.MidlineLeft;
UIFontSetupTool.ApplyRole(slotTmp, UIFontRole.Body);
System.IO.Directory.CreateDirectory(Application.dataPath + "/_Game/Prefabs/UI");
var slotPrefab = PrefabUtility.SaveAsPrefabAsset(slotGO, "Assets/_Game/Prefabs/UI/PlayerSlot.prefab");
var slotPrefab = PrefabUtility.SaveAsPrefabAsset(slotGO, "Assets/_Game/Prefabs/UI/UI_PlayerSlot.prefab");
Object.DestroyImmediate(slotGO);
// ── LobbyUI 연결 ──────────────────────────────────────
@@ -297,6 +298,7 @@ namespace Colosseum.Editor
phTmp.text = placeholder;
phTmp.fontSize = 18;
phTmp.color = new Color(0.5f, 0.5f, 0.5f);
UIFontSetupTool.ApplyRole(phTmp, UIFontRole.Combat);
var txtGO = new GameObject("Text");
txtGO.transform.SetParent(textArea.transform, false);
@@ -307,6 +309,7 @@ namespace Colosseum.Editor
var txt = txtGO.AddComponent<TextMeshProUGUI>();
txt.fontSize = 18;
txt.color = Color.white;
UIFontSetupTool.ApplyRole(txt, UIFontRole.Combat);
input.textViewport = taRect;
input.placeholder = phTmp;
@@ -335,11 +338,12 @@ namespace Colosseum.Editor
tmp.fontSize = 20;
tmp.alignment = TextAlignmentOptions.Center;
tmp.color = Color.white;
UIFontSetupTool.ApplyRole(tmp, UIFontRole.Combat);
return go;
}
private static TextMeshProUGUI CreateLabel(Transform parent, string name, string text, int size)
private static TextMeshProUGUI CreateLabel(Transform parent, string name, string text, int size, UIFontRole role = UIFontRole.Body)
{
var go = new GameObject(name);
go.transform.SetParent(parent, false);
@@ -350,6 +354,7 @@ namespace Colosseum.Editor
tmp.fontSize = size;
tmp.alignment = TextAlignmentOptions.Center;
tmp.color = Color.white;
UIFontSetupTool.ApplyRole(tmp, role);
return tmp;
}