#if UNITY_EDITOR using UnityEditor; using UnityEngine; namespace ShrinkApp.Editor { public static class ShrinkAppEditorMenu { [MenuItem("ShrinkSDK/应用/创建设置")] public static void CreateSettingsAsset() { const string settingsDirectory = "Assets/Resources/GameAssets/Runtime/Data/ShrinkSDK"; EnsureFolder(settingsDirectory); const string assetPath = settingsDirectory + "/ShrinkAppSettings.asset"; var existing = AssetDatabase.LoadAssetAtPath(assetPath); if (existing != null) { Selection.activeObject = existing; EditorGUIUtility.PingObject(existing); return; } // 旧版本曾生成过 m_Script=fileID:0 的无效占位资产。删除该占位后 // 才能在同一路径创建真正绑定 ShrinkAppSettings 类型的资产。 if (!string.IsNullOrEmpty(AssetDatabase.AssetPathToGUID(assetPath))) AssetDatabase.DeleteAsset(assetPath); var asset = ScriptableObject.CreateInstance(); AssetDatabase.CreateAsset(asset, assetPath); AssetDatabase.SaveAssets(); Selection.activeObject = asset; EditorGUIUtility.PingObject(asset); Debug.Log("[ShrinkApp] 已创建 ShrinkAppSettings.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