Projext/Assets/Scripts/Enemy/BossAI/BossCounterDebugPanel.cs

94 lines
3.4 KiB
C#
Raw Normal View History

2026-02-10 15:29:22 +00:00
using UnityEngine;
/// <summary>
/// 개발 중 보스 카운터 시스템을 테스트하기 위한 디버그 패널.
/// 빌드 시 자동으로 비활성화됩니다.
/// </summary>
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
}