using System; using Framework.Audio; using Framework.Timer; using Framework.Utils.Extend; using IcecreamView; using UnityEngine; using AudioType = Framework.Audio.AudioType; namespace Views.Common { public class CommonAudioModule : IcecreamView.IC_AbstractModule { [Serializable] public class AudioData { public SeAudio AudioName = SeAudio.None; public bool IsLoop = false; public float Volume = 1; public float Delay = 0; public AudioData (SeAudio audioName) { this.AudioName = audioName; } } private TimeHandler _timeHandler; [Header("页面打开时,环境音效缩放系数")] public float BseVolumeScaleOffset = 1; [Header("页面打开时,环境音效缩放时间")] public float BseVolumeScaleTime = 0.35f; [SerializeField] private AudioData _openAudioData = new AudioData (SeAudio.PanelPop_Pop01); [SerializeField] private AudioData _closeAudioData= new AudioData (SeAudio.PanelPop_Pop02); public override void OnOpenView (IC_ViewData msgData) { if (!BseVolumeScaleOffset.Compare(1f)) { // AudioManager.Instance.SetGroupVolume(AudioType.BSE , AudioManager.Instance.BSEValue * BseVolumeScaleOffset , BseVolumeScaleTime); AudioManager.Instance.SetGlobalVolume(AudioType.BGM , AudioManager.Instance.MusicValue * BseVolumeScaleOffset , BseVolumeScaleTime); } _timeHandler?.Kill (); if (_openAudioData.AudioName != SeAudio.None) { _timeHandler = GameUpdateMgr.Instance.CreateTimer (_openAudioData.Delay , () => { AudioManager.Instance.PlaySoundEffect (_openAudioData.AudioName , _openAudioData.Volume , 0 , _openAudioData.IsLoop); }); } } public override void OnCloseView () { if (!BseVolumeScaleOffset.Compare(1f)) { // AudioManager.Instance.SetGroupVolume(AudioType.BSE , AudioManager.Instance.BSEValue , BseVolumeScaleTime); AudioManager.Instance.SetGlobalVolume(AudioType.BGM , AudioManager.Instance.MusicValue , BseVolumeScaleTime); } _timeHandler?.Kill (); if (_closeAudioData.AudioName != SeAudio.None) { AudioManager.Instance.PlaySoundEffect (_closeAudioData.AudioName , _closeAudioData.Volume , 0 , _closeAudioData.IsLoop); } } } }