94 lines
3.4 KiB
C#
94 lines
3.4 KiB
C#
|
|
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
|
||
|
|
}
|