using UnityEditor; using UnityEngine; namespace OCES.Haptic.Editor { static class HapticSettingsProvider { const string k_settingPath = "Assets/Settings/HapticSettings.asset"; [SettingsProvider] static SettingsProvider Creat() { return new SettingsProvider("Project/Haptic Settings", SettingsScope.Project) { label = "Haptic Settings", guiHandler = _ => { HapticSettings settings = AssetDatabase.LoadAssetAtPath(k_settingPath); if (!settings) { EditorGUILayout.HelpBox( $"未找到 AudioExtendSettings.asset\n期望路径: {k_settingPath}", MessageType.Warning); if (GUILayout.Button("创建默认配置")) CreateDefaultAsset(); return; } SerializedObject serializedObject = new(settings); SerializedProperty serializedProperty = serializedObject.GetIterator(); serializedProperty.NextVisible(true); EditorGUI.BeginChangeCheck(); while (serializedProperty.NextVisible(false)) { EditorGUILayout.PropertyField(serializedProperty, true); } if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty(settings); AssetDatabase.SaveAssets(); } }, keywords = new[] { "Haptic", "Audio", "Vibration", "Vibrator", "Path" }, }; } [MenuItem("Tools/OCES/Haptic/Create Haptic Settings Asset")] static void CreateDefaultAsset() { if (!AssetDatabase.IsValidFolder("Assets/Settings")) AssetDatabase.CreateFolder("Assets", "Settings"); HapticSettings asset = ScriptableObject.CreateInstance(); AssetDatabase.CreateAsset(asset, k_settingPath); AssetDatabase.SaveAssets(); Debug.Log($"[HapticSettings] 已创建默认配置:{k_settingPath}"); } } }