64 lines
2.4 KiB
C#
64 lines
2.4 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
namespace OCES.Audio.Editor
|
|
{
|
|
static class AudioExtendSettingsProvider
|
|
{
|
|
const string k_assetPath = "Assets/Settings/AudioExtendSettings.asset";
|
|
|
|
[SettingsProvider]
|
|
static SettingsProvider Create()
|
|
{
|
|
return new SettingsProvider("Project/Audio Extend", SettingsScope.Project)
|
|
{
|
|
label = "Audio Extend",
|
|
guiHandler = _ =>
|
|
{
|
|
AudioExtendSettings settings = AssetDatabase.LoadAssetAtPath<AudioExtendSettings>(k_assetPath);
|
|
if (!settings)
|
|
{
|
|
EditorGUILayout.HelpBox(
|
|
$"未找到 AudioExtendSettings.asset\n期望路径: {k_assetPath}",
|
|
MessageType.Warning);
|
|
if (GUILayout.Button("创建默认配置"))
|
|
CreateDefaultAsset();
|
|
return;
|
|
}
|
|
|
|
SerializedObject serializedObject = new(settings);
|
|
SerializedProperty serializedProperty = serializedObject.GetIterator();
|
|
serializedProperty.NextVisible(true); // 跳过 Script 字段
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
while (serializedProperty.NextVisible(false))
|
|
{
|
|
EditorGUILayout.PropertyField(serializedProperty, true);
|
|
}
|
|
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
serializedObject.ApplyModifiedProperties();
|
|
EditorUtility.SetDirty(settings);
|
|
AssetDatabase.SaveAssets();
|
|
}
|
|
},
|
|
keywords = new[] { "Audio", "SFX", "Music", "Mixer", "Path", "Import" },
|
|
};
|
|
}
|
|
|
|
[MenuItem("Tools/OCES/Audio/Create AudioExtendSettings Asset")]
|
|
static void CreateDefaultAsset()
|
|
{
|
|
if (!AssetDatabase.IsValidFolder("Assets/Settings"))
|
|
AssetDatabase.CreateFolder("Assets", "Settings");
|
|
|
|
var asset = ScriptableObject.CreateInstance<AudioExtendSettings>();
|
|
AssetDatabase.CreateAsset(asset, k_assetPath);
|
|
AssetDatabase.SaveAssets();
|
|
Debug.Log($"[AudioExtend] 已创建默认配置:{k_assetPath}");
|
|
}
|
|
}
|
|
}
|
|
|