using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using YooAsset;
namespace TEngine
{
public interface IAudioModule
{
///
/// 总音量控制。
///
public float Volume { get; set; }
///
/// 总开关。
///
public bool Enable { get; set; }
///
/// 音乐音量
///
public float MusicVolume { get; set; }
///
/// 音效音量。
///
public float SoundVolume { get; set; }
///
/// UI音效音量。
///
public float UISoundVolume { get; set; }
///
/// 语音音量。
///
public float VoiceVolume { get; set; }
///
/// 音乐开关。
///
public bool MusicEnable { get; set; }
///
/// 音效开关。
///
public bool SoundEnable { get; set; }
///
/// UI音效开关。
///
public bool UISoundEnable { get; set; }
///
/// 语音开关。
///
public bool VoiceEnable { get; set; }
///
/// 音频混响器。
///
public AudioMixer AudioMixer { get;}
///
/// 实例化根节点。
///
public Transform InstanceRoot { get;}
public Dictionary AudioClipPool { get; set; }
///
/// 初始化音频模块。
///
/// 音频轨道组配置。
/// 实例化根节点。
/// 音频混响器。
///
public void Initialize(AudioGroupConfig[] audioGroupConfigs, Transform instanceRoot = null, AudioMixer audioMixer = null);
///
/// 重启音频模块。
///
public void Restart();
///
/// 播放音频接口。
///
/// 如果超过最大发声数采用fadeout的方式复用最久播放的AudioSource。
/// 声音类型。
/// 声音文件路径。
/// 是否循环播放。>
/// 音量(0-1.0)。
/// 是否异步加载。
/// 是否支持资源池。
public AudioAgent Play(AudioType type, string path, bool bLoop = false, float volume = 1.0f, bool bAsync = false, bool bInPool = false);
///
/// 停止某类声音播放。
///
/// 声音类型。
/// 是否渐消。
public void Stop(AudioType type, bool fadeout);
///
/// 停止所有声音。
///
/// 是否渐消。
public void StopAll(bool fadeout);
///
/// 预先加载AudioClip,并放入对象池。
///
/// AudioClip的AssetPath集合。
public void PutInAudioPool(List list);
///
/// 将部分AudioClip从对象池移出。
///
/// AudioClip的AssetPath集合。
public void RemoveClipFromPool(List list);
///
/// 清空AudioClip的对象池。
///
public void CleanSoundPool();
}
}