using System.IO; using UnityEditor; using UnityEngine; public static class SaveDataMenu { private const string MENU = "Tools/Run Rich 3D/Delete Save"; [MenuItem(MENU)] public static void DeleteSave() { var deleted = 0; foreach (var path in SavePaths()) { if (!File.Exists(path)) { continue; } File.Delete(path); Debug.Log("Deleted " + path); deleted++; } PlayerPrefs.DeleteAll(); PlayerPrefs.Save(); Debug.Log(deleted > 0 ? "Save cleared. Next play starts at level 1." : "No save file found; PlayerPrefs cleared anyway. Next play starts at level 1."); } private static string[] SavePaths() { var controller = Object.FindObjectOfType(); var field = typeof(OHM.UnityToolkit.SavedDataController) .GetField("_dataPath", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); var name = controller != null && field != null ? field.GetValue(controller) as string : null; if (string.IsNullOrEmpty(name)) { return Directory.Exists(Application.persistentDataPath) ? Directory.GetFiles(Application.persistentDataPath, "*.json") : new string[0]; } return new[] { Path.Combine(Application.persistentDataPath, name) }; } }