// WL-813y 적용 — 설정 에셋 값 갱신(C8/C45 · 코드 상수 0). 프리팹은 건드리지 않는다. // run_script --file AgentScripts/WL813y_Apply.cs --entry WL813y_Apply.Assets using System.Text; using UnityEngine; using UnityEditor; using WL.UI; public static class WL813y_Apply { public static string Assets() { var sb = new StringBuilder(); // ── ① 전투 패드 원점 복귀 + 하단 메뉴 숨김 (발주서 §1-6) ───────────── var hud = Resources.Load(WLHudLayoutSettings.ResourcesPath); if (hud == null) sb.AppendLine("WLHudLayoutSettings 없음"); else { sb.AppendLine("[hud] 전 fanOrigin" + hud.fanOriginPx + " attackCenter" + hud.attackCenterPx); hud.fanOriginPx = new Vector2(0f, 0f); // Q3 D-5: Lead 핫픽스 260 → 0 hud.attackCenterPx = new Vector2(100f, 100f); // 360 → 100 hud.idleFanOriginPx = new Vector2(0f, 260f); // 메뉴가 보이는 동안만 쓰던 자리 hud.idleAttackCenterPx = new Vector2(100f, 360f); hud.combatHideBottomMenu = true; hud.bottomMenuPath = "IngameUIs/WL_HUD/HUD_BottomMenu"; // 813y 실측 경로 hud.bottomMenuUseCanvasGroup = true; hud.bottomMenuFadeSeconds = 0.18f; hud.combatExitSeconds = 6f; hud.combatEnterDelaySeconds = 0f; hud.combatUseTargetAsSignal = true; hud.bottomMenuRestoreButton = true; hud.restoreButtonCenterPx = new Vector2(-380f, 62f); hud.restoreButtonDiameterPx = 88f; hud.restoreButtonLabel = "≡"; hud.restoreButtonFontPx = 46f; hud.restoreHoldSeconds = 8f; hud.bossBarBindExisting = true; // Q3 D-3 EditorUtility.SetDirty(hud); sb.AppendLine("[hud] 후 fanOrigin" + hud.fanOriginPx + " attackCenter" + hud.attackCenterPx + " idleFanOrigin" + hud.idleFanOriginPx + " idleAttack" + hud.idleAttackCenterPx + " menu=" + hud.bottomMenuPath + " exit=" + hud.combatExitSeconds + "s"); } // ── ② 토스트 가시성 + 텍스트 아웃라인 (발주서 §1-3 · §1-4) ─────────── var txt = Resources.Load(WLCombatTextSettings.ResourcesPath); if (txt == null) sb.AppendLine("WLCombatTextSettings 없음"); else { sb.AppendLine("[text] 전 toast(sec=" + txt.lootToastSeconds + " font=" + txt.lootToastFontPx + " w=" + txt.lootToastWidthPx + " lh=" + txt.lootToastLineHeightPx + " centerOff=" + txt.lootToastCenterOffsetPx + ")"); txt.lootToastSeconds = 2.0f; // 발주서 §1-3: 1.2 → 2.0 s txt.lootToastFontPx = 52f; // Q3 D-6 ②: 40 px 는 세로 캡처에서 육안 실패 txt.lootToastLineHeightPx = 68f; // 폰트 + 패널 여백이 들어갈 줄 간격 txt.lootToastWidthPx = 560f; txt.lootToastCenterOffsetPx = -120f; // 스탯 팝업(+180) · 연쇄 문구(+520) 대역을 피한다 txt.lootToastRightMarginPx = 40f; txt.lootToastPanelEnabled = true; txt.lootToastPanelColor = new Color(0.03f, 0.03f, 0.05f, 0.68f); txt.lootToastPanelPadXPx = 18f; txt.lootToastPanelPadYPx = 6f; txt.lootToastMinBrightness = 0.72f; // 등급 1 회색(#a6a6a7 · V 0.65)을 끌어올린다 txt.lootToastMinBrightColor = new Color(0.95f, 0.96f, 0.98f, 1f); txt.textEdgeEnabled = true; txt.killChainEdge = new WLTextEdge { enabled = true, outlineWidth = 0.30f, outlineColor = new Color(0.05f, 0.03f, 0.02f, 1f), shadowOffset = new Vector2(0.55f, -0.55f), shadowColor = new Color(0f, 0f, 0f, 0.8f), shadowSoftness = 0.25f, faceDilate = 0.1f, }; txt.statPopupEdge = new WLTextEdge { enabled = true, outlineWidth = 0.26f, outlineColor = new Color(0.05f, 0.03f, 0.02f, 1f), shadowOffset = new Vector2(0.45f, -0.45f), shadowColor = new Color(0f, 0f, 0f, 0.75f), shadowSoftness = 0.2f, faceDilate = 0.08f, }; txt.damageEdge = new WLTextEdge { enabled = true, outlineWidth = 0.22f, outlineColor = new Color(0.03f, 0.02f, 0.02f, 1f), shadowOffset = new Vector2(0.35f, -0.35f), shadowColor = new Color(0f, 0f, 0f, 0.7f), shadowSoftness = 0.15f, faceDilate = 0.05f, }; txt.lootToastEdge = new WLTextEdge { enabled = true, outlineWidth = 0.24f, outlineColor = new Color(0.03f, 0.02f, 0.02f, 1f), shadowOffset = new Vector2(0.4f, -0.4f), shadowColor = new Color(0f, 0f, 0f, 0.7f), shadowSoftness = 0.18f, faceDilate = 0.06f, }; txt.statPopupUseGrowthEvents = true; // 발주서 §1-2 · 813k 축 txt.statPopupPointFormat = "+5 포인트 (보유 {0})"; txt.statPopupMergeMultiLevel = true; EditorUtility.SetDirty(txt); sb.AppendLine("[text] 후 toast(sec=" + txt.lootToastSeconds + " font=" + txt.lootToastFontPx + " w=" + txt.lootToastWidthPx + " lh=" + txt.lootToastLineHeightPx + " centerOff=" + txt.lootToastCenterOffsetPx + " panel=" + txt.lootToastPanelEnabled + ")"); sb.AppendLine("[text] edge kill=" + txt.killChainEdge + " / stat=" + txt.statPopupEdge + " / dmg=" + txt.damageEdge + " / loot=" + txt.lootToastEdge); } // ── ③ 보스 배너 늦은 구독 (발주서 §1-5) ────────────────────────────── var boss = Resources.Load(WLBossUiSettings.ResourcesPath); if (boss == null) sb.AppendLine("WLBossUiSettings 없음"); else { boss.bannerTriggerExisting = true; EditorUtility.SetDirty(boss); sb.AppendLine("[boss] bannerTriggerExisting=" + boss.bannerTriggerExisting); } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); return sb.ToString(); } }