61 lines
2.3 KiB
C#
61 lines
2.3 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 = searchContext =>
|
|
{
|
|
var settings = AssetDatabase.LoadAssetAtPath<AudioExtendSettings>(k_assetPath);
|
|
if (settings == null)
|
|
{
|
|
EditorGUILayout.HelpBox(
|
|
$"未找到 AudioExtendSettings.asset\n期望路径: {k_assetPath}",
|
|
MessageType.Warning);
|
|
if (GUILayout.Button("创建默认配置"))
|
|
CreateDefaultAsset();
|
|
return;
|
|
}
|
|
|
|
SerializedObject so = new SerializedObject(settings);
|
|
SerializedProperty prop = so.GetIterator();
|
|
prop.NextVisible(true); // 跳过 Script 字段
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
while (prop.NextVisible(false))
|
|
EditorGUILayout.PropertyField(prop, true);
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
so.ApplyModifiedProperties();
|
|
EditorUtility.SetDirty(settings);
|
|
AssetDatabase.SaveAssets();
|
|
}
|
|
},
|
|
keywords = new[] { "Audio", "SFX", "Music", "Mixer", "Path", "Import" }
|
|
};
|
|
}
|
|
|
|
[MenuItem("Tools/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}");
|
|
}
|
|
}
|
|
}
|
|
|