using UnityEngine; [DisallowMultipleComponent] public class MemoryProgressDebugResetter : MonoBehaviour { [Header("References")] [SerializeField] private MemoryProgressManager memoryProgressManager; [SerializeField] private MemoryPieceReward[] rewardsToReset; [SerializeField] private MemoryPiecePickup[] pickupsToReset; [Header("Options")] [SerializeField] private bool autoFindIfEmpty = true; [ContextMenu("Reset Memory Progress And Rewards")] public void ResetMemoryProgressAndRewards() { ResolveReferencesIfNeeded(); if (memoryProgressManager != null) memoryProgressManager.ResetProgress(); if (rewardsToReset != null) { for (int i = 0; i < rewardsToReset.Length; i++) { if (rewardsToReset[i] != null) rewardsToReset[i].ResetReward(); } } if (pickupsToReset != null) { for (int i = 0; i < pickupsToReset.Length; i++) { if (pickupsToReset[i] != null) pickupsToReset[i].ResetPickup(); } } Debug.Log("[MemoryProgressDebugResetter] 기억의 조각 진행도 / 보상 / 픽업 상태를 초기화했습니다.", this); } public void ClearSavedProgressOnly() { ResolveReferencesIfNeeded(); if (memoryProgressManager != null) memoryProgressManager.ClearSavedProgress(); } private void ResolveReferencesIfNeeded() { if (!autoFindIfEmpty) return; if (memoryProgressManager == null) memoryProgressManager = FindFirstObjectByType(); if (rewardsToReset == null || rewardsToReset.Length == 0) rewardsToReset = FindObjectsByType(FindObjectsSortMode.None); if (pickupsToReset == null || pickupsToReset.Length == 0) pickupsToReset = FindObjectsByType(FindObjectsSortMode.None); } }