using UnityEngine; /// /// 개발 중 보스 카운터 시스템을 테스트하기 위한 디버그 패널. /// 빌드 시 자동으로 비활성화됩니다. /// public class BossCounterDebugPanel : MonoBehaviour { [SerializeField] private BossCounterSystem counterSystem; [SerializeField] private bool showDebugGUI = true; #if UNITY_EDITOR || DEVELOPMENT_BUILD private void OnGUI() { if (!showDebugGUI) return; GUILayout.BeginArea(new Rect(10, 10, 400, 500)); GUILayout.BeginVertical("box"); GUILayout.Label("═══ 보스 카운터 디버그 ═══", GUI.skin.box); // ── 플레이어 행동 데이터 ── var tracker = PlayerBehaviorTracker.Instance; if (tracker != null) { GUILayout.Label("── 플레이어 행동 (10초 윈도우) ──"); GUILayout.Label($" 회피 횟수: {tracker.DodgeCount}"); GUILayout.Label($" 조준 시간: {tracker.AimHoldTime:F1}s"); GUILayout.Label($" 관통 비율: {tracker.PierceRatio:P0} ({tracker.TotalShotsInWindow}발)"); } GUILayout.Space(5); // ── 카운터 상태 ── if (counterSystem != null) { GUILayout.Label("── 카운터 모드 ──"); var actives = counterSystem.GetActiveCounters(); GUILayout.Label($" 활성 카운터: {(actives.Count > 0 ? string.Join(", ", actives) : "없음")}"); GUILayout.Label($" 습관 변경 보상: {(counterSystem.IsHabitChangeRewarded ? "ON" : "OFF")}"); } GUILayout.Space(5); // ── 영구 데이터 ── var persistence = BossCounterPersistence.Instance; if (persistence != null) { GUILayout.Label("── 영구 잠금 해제 ──"); GUILayout.Label($" 회피: {(persistence.IsUnlocked(CounterType.Dodge) ? "✓" : "✗")} (발동 {persistence.Data.dodgeCounterActivations}회)"); GUILayout.Label($" 조준: {(persistence.IsUnlocked(CounterType.Aim) ? "✓" : "✗")} (발동 {persistence.Data.aimCounterActivations}회)"); GUILayout.Label($" 관통: {(persistence.IsUnlocked(CounterType.Pierce) ? "✓" : "✗")} (발동 {persistence.Data.pierceCounterActivations}회)"); } GUILayout.Space(10); // ── 수동 트리거 버튼 ── GUILayout.Label("── 수동 테스트 ──"); if (tracker != null) { GUILayout.BeginHorizontal(); if (GUILayout.Button("회피 x5")) { for (int i = 0; i < 5; i++) tracker.RecordDodge(); } if (GUILayout.Button("발사(일반)")) { tracker.RecordShot(false); } if (GUILayout.Button("발사(관통)")) { tracker.RecordShot(true); } GUILayout.EndHorizontal(); } if (counterSystem != null) { if (GUILayout.Button("패턴 선택 테스트")) { string pattern = counterSystem.SelectBossPattern(); Debug.Log($"[디버그] 선택된 패턴: {pattern}"); } } if (persistence != null) { GUILayout.Space(5); if (GUILayout.Button("영구 데이터 초기화")) { persistence.ResetAllData(); } } GUILayout.EndVertical(); GUILayout.EndArea(); } #endif }