feat: AudioSettings 独立出配置文件,而不是零散在代码各处。
This commit is contained in:
@@ -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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user