#if UNITY_EDITOR using UnityEditor; using UnityEngine; namespace ShrinkModFramework.Editor { public static class ShrinkModFrameworkSettingsMenu { private const string SettingsDirectory = "Assets/Resources/GameAssets/Runtime/Data/ShrinkSDK"; private const string SettingsAssetPath = SettingsDirectory + "/ShrinkModFrameworkSettings.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("[ShrinkModFramework] 已创建 ShrinkModFrameworkSettings.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