From 1bfb99d4c3767894276ffb68797d8a446444139c Mon Sep 17 00:00:00 2001 From: cneicy Date: Fri, 28 Aug 2026 03:44:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(settings):=20=E4=BC=98=E5=85=88=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E6=A0=87=E5=87=86=20ShrinkSDK=20=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 ++++ Editor/ShrinkDataSaverSettingsMenu.cs | 49 ++++++++++++++++++++++ Editor/ShrinkDataSaverSettingsMenu.cs.meta | 11 +++++ README.md | 6 ++- Runtime/ShrinkDataSaverSettings.cs | 13 +++++- package.json | 2 +- 6 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 Editor/ShrinkDataSaverSettingsMenu.cs create mode 100644 Editor/ShrinkDataSaverSettingsMenu.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e77c71..0b148a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ 本文件记录 `ShrinkDataSaver` 在当前工作区中的包内变更。 +## [2.2.2] - 2026-08-28 + +### Changed + +- `ShrinkDataSaverSettings` 优先从 `GameAssets/Runtime/Data/ShrinkSDK/ShrinkDataSaverSettings` 加载,并保留旧根路径回退。 +- 新增 `ShrinkSDK/存档/创建设置`,统一在标准资源目录创建配置。 + ## [2.2.0] - 2026-05-18 ### Added diff --git a/Editor/ShrinkDataSaverSettingsMenu.cs b/Editor/ShrinkDataSaverSettingsMenu.cs new file mode 100644 index 0000000..5a680e7 --- /dev/null +++ b/Editor/ShrinkDataSaverSettingsMenu.cs @@ -0,0 +1,49 @@ +#if UNITY_EDITOR +using UnityEditor; +using UnityEngine; + +namespace ShrinkDataSaver.Editor +{ + public static class ShrinkDataSaverSettingsMenu + { + private const string SettingsDirectory = + "Assets/Resources/GameAssets/Runtime/Data/ShrinkSDK"; + private const string SettingsAssetPath = + SettingsDirectory + "/ShrinkDataSaverSettings.asset"; + + [MenuItem("ShrinkSDK/存档/创建设置")] + public static void CreateSettingsAsset() + { + EnsureFolder(SettingsDirectory); + + var existing = AssetDatabase.LoadAssetAtPath(SettingsAssetPath); + if (existing != null) + { + Selection.activeObject = existing; + EditorGUIUtility.PingObject(existing); + return; + } + + var asset = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(asset, SettingsAssetPath); + AssetDatabase.SaveAssets(); + Selection.activeObject = asset; + EditorGUIUtility.PingObject(asset); + Debug.Log("[ShrinkDataSaver] 已创建 ShrinkDataSaverSettings.asset"); + } + + private static void EnsureFolder(string path) + { + var segments = path.Split('/'); + var current = segments[0]; + for (var i = 1; i < segments.Length; i++) + { + var next = current + "/" + segments[i]; + if (!AssetDatabase.IsValidFolder(next)) + AssetDatabase.CreateFolder(current, segments[i]); + current = next; + } + } + } +} +#endif diff --git a/Editor/ShrinkDataSaverSettingsMenu.cs.meta b/Editor/ShrinkDataSaverSettingsMenu.cs.meta new file mode 100644 index 0000000..365e953 --- /dev/null +++ b/Editor/ShrinkDataSaverSettingsMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fcd9a64a8a5541eba481189d9c887c5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/README.md b/README.md index 19626cd..3aa07cd 100644 --- a/README.md +++ b/README.md @@ -50,9 +50,11 @@ https://git.crash.work/ShrinkSDK/ShrinkDataSaver.git ### 第一步:创建配置资产 -菜单 `Assets` → `Create` → `ShrinkDataSaver` → `Settings`。 +菜单 `ShrinkSDK` → `存档` → `创建设置`。 -配置文件可放置在项目**任意目录**下,编辑器会通过 `AssetDatabase` 自动搜索。也可放在 `Resources/` 下供运行时加载,或在 Bootstrap 组件上手动指定。 +菜单会创建 `Assets/Resources/GameAssets/Runtime/Data/ShrinkSDK/ShrinkDataSaverSettings.asset`。 +运行时优先从该路径加载,并保留旧的 `Assets/Resources/ShrinkDataSaverSettings.asset` +回退;也可以在 Bootstrap 组件上手动指定。 > ⚠️ 未找到配置文件时,控制台会输出警告并使用默认配置。 diff --git a/Runtime/ShrinkDataSaverSettings.cs b/Runtime/ShrinkDataSaverSettings.cs index 1d3dc26..65f3867 100644 --- a/Runtime/ShrinkDataSaverSettings.cs +++ b/Runtime/ShrinkDataSaverSettings.cs @@ -5,6 +5,10 @@ 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 @@ -13,7 +17,9 @@ namespace ShrinkDataSaver { if (_instance) return _instance; - _instance = Resources.Load("ShrinkDataSaverSettings"); + _instance = Resources.Load(PreferredResourcesPath); + if (!_instance) + _instance = Resources.Load(LegacyResourcesPath); #if UNITY_EDITOR if (!_instance) @@ -41,6 +47,11 @@ namespace ShrinkDataSaver internal set => _instance = value; } + internal static void ResetCachedInstance() + { + _instance = null; + } + [Header("Storage")] public string customSavePath = ""; diff --git a/package.json b/package.json index cd1ff3e..38754e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.cneicy.shrink-datasaver", - "version": "2.2.1", + "version": "2.2.2", "displayName": "ShrinkDataSaver", "description": "模块化 Unity 存档与设置管理系统,支持多槽位、链式版本迁移、AES-256 加密、关键模块保护、跨模块查询与事件驱动架构。", "unity": "2022.3",