feat: AudioSettings 独立出配置文件,而不是零散在代码各处。

This commit is contained in:
2026-05-14 20:22:00 +08:00
parent 892689fed5
commit 6cd802ba3a
13 changed files with 251 additions and 60 deletions
@@ -0,0 +1,60 @@
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}");
}
}
}