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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user