using UnityEngine; namespace ShrinkDataSaver { [CreateAssetMenu(fileName = "ShrinkDataSaverSettings", menuName = "ShrinkSDK/存档/存档设置")] public class ShrinkDataSaverSettings : ScriptableObject { public const string PreferredResourcesPath = "GameAssets/Runtime/Data/ShrinkSDK/ShrinkDataSaverSettings"; public const string LegacyResourcesPath = "ShrinkDataSaverSettings"; private static ShrinkDataSaverSettings _instance; public static ShrinkDataSaverSettings Instance { get { if (_instance) return _instance; _instance = Resources.Load(PreferredResourcesPath); if (!_instance) _instance = Resources.Load(LegacyResourcesPath); #if UNITY_EDITOR if (!_instance) { var guids = UnityEditor.AssetDatabase.FindAssets("t:ShrinkDataSaverSettings"); if (guids.Length > 0) { var path = UnityEditor.AssetDatabase.GUIDToAssetPath(guids[0]); _instance = UnityEditor.AssetDatabase.LoadAssetAtPath(path); } } #endif if (!_instance) { _instance = CreateInstance(); Debug.LogWarning( "[ShrinkDataSaver] 未找到 ShrinkDataSaverSettings 配置文件!当前使用默认配置。\n" + "请通过菜单 Assets → Create → ShrinkDataSaver → Settings 创建配置文件,\n" + "可放置在项目任意目录下(编辑器会自动搜索),或在 ShrinkDataSaverBootstrap 组件上手动指定。"); } return _instance; } internal set => _instance = value; } internal static void ResetCachedInstance() { _instance = null; } [Header("Storage")] public string customSavePath = ""; [Header("Settings File")] public string settingsFileName = "settings.json"; public bool syncSettingsToCloud; //todo [Header("Save Slots")] public int maxSlots; public string saveFileExtension = ".sav"; [Header("Screenshot")] public int screenshotMaxWidth = 256; [Header("Settings Debounce")] public float settingsWriteDebounceSeconds = 0.3f; } }