Files
taptap2024_GJ_chidouren/Assets/Scripts/Views/Common/CommonAudioModule.cs
2024-10-16 00:03:41 +08:00

69 lines
2.6 KiB
C#

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);
}
}
}
}