feat: 在Unity内支持直接调整音频文件进行混音

This commit is contained in:
2026-05-19 12:04:31 +08:00
parent 67de857f8c
commit 9dc4228b5c
4 changed files with 77 additions and 12 deletions
@@ -0,0 +1,57 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEditor.Build;
namespace OCES.Audio.HandWritten.Editor
{
public static class MixingHelper
{
static readonly List<NamedBuildTarget> s_selectedBuildTargets = new()
{
NamedBuildTarget.Android,
NamedBuildTarget.iOS,
NamedBuildTarget.Standalone,
};
static readonly AudioExtendSettings s_audioExtendSettings = AssetDatabase.LoadAssetAtPath<AudioExtendSettings>(AssetDatabase.GUIDToAssetPath("de80878c933394e2da0966a1466fd793"));
[MenuItem("Tools/OCES/Audio/Enable Mixing")]
public static void EnableMixing()
{
if (s_audioExtendSettings is not null && s_audioExtendSettings.useAssetBundle)
{
EditorUtility.DisplayDialog("Mixing", "已启用Asset Bundle。\n对音频文件的调整不会生效。", "好吧");
}
foreach (NamedBuildTarget buildTarget in s_selectedBuildTargets)
{
PlayerSettings.GetScriptingDefineSymbols(buildTarget, out string[] defineArray);
List<string> defineList = defineArray.ToList();
if (!defineArray.Contains("AUDIO_MIXING"))
{
defineList.Add("AUDIO_MIXING");
PlayerSettings.SetScriptingDefineSymbols(buildTarget, defineList.ToArray());
}
}
}
[MenuItem("Tools/OCES/Audio/Disable Mixing")]
public static void DisableMixing()
{
foreach (NamedBuildTarget buildTarget in s_selectedBuildTargets)
{
PlayerSettings.GetScriptingDefineSymbols(buildTarget, out string[] defineArray);
List<string> defineList = defineArray.ToList();
if (defineList.Contains("AUDIO_MIXING"))
{
defineList.Remove("AUDIO_MIXING");
PlayerSettings.SetScriptingDefineSymbols(buildTarget, defineList.ToArray());
}
}
}
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 388d2124804048c1a9ea3c403820b443
timeCreated: 1779159928