using System; using FMOD.Studio; using Yarn.Unity; namespace AibisDream.Kit { public static class AudioYarnCommand { private static IAudioManager AudioManager => FmodManager.Instance; [YarnCommand("play_music")] public static void PlayMusic(string eventName) { AudioManager.PlayMusic(eventName); } [YarnCommand("stop_music")] public static void StopMusic(string eventName, string type = null) { // 处理停止类型 var mode = type switch { "fade" => STOP_MODE.ALLOWFADEOUT, _ => STOP_MODE.IMMEDIATE }; AudioManager.StopMusic(eventName, mode); } [YarnCommand("set_music_param")] public static void SetMusicParam(string eventName, string paramName, float paramValue) { AudioManager.SetMusicParam(eventName, paramName, paramValue); } [YarnCommand("play_sfx")] public static void PlaySfx(string eventName) { AudioManager.PlaySfx(eventName); } [YarnCommand("stop_sfx")] public static void StopSfx(string eventName, string type = null) { // 处理停止类型 var mode = type switch { "fade" => STOP_MODE.ALLOWFADEOUT, _ => STOP_MODE.IMMEDIATE }; AudioManager.StopSfx(eventName, mode); } [YarnCommand("set_sfx_param")] public static void SetSfxParam(string eventName, string paramName, float paramValue) { AudioManager.SetSfxParam(eventName, paramName, paramValue); } [YarnCommand("change_amb")] public static void ChangeAmb(string ambState) { var realState = Enum.Parse(ambState); AudioManager.ChangeAmb(realState); } [YarnCommand("set_amb_param")] public static void SetAmbParam(string paramName, float value) { AudioManager.SetAmbParam(paramName, value); } } }