|
@@ -14,7 +14,7 @@ namespace Core.Audio
|
|
|
private Map<string, AudioBundleInfo> _allAduionBundleInfos = new Map<string, AudioBundleInfo>();
|
|
|
|
|
|
private Queue<AudioSourcePool> _audioSourcePools = new Queue<AudioSourcePool>();
|
|
|
- private List<AudioSourcePool> _currPlayAudio = new List<AudioSourcePool>();
|
|
|
+ private Map<string, AudioSourcePool> _currPlayAudio = new Map<string, AudioSourcePool>();
|
|
|
|
|
|
private List<string> _bgmQueue = new List<string>();
|
|
|
private AudioSourcePool _currBgm;
|
|
@@ -49,6 +49,13 @@ namespace Core.Audio
|
|
|
{
|
|
|
}
|
|
|
|
|
|
+ public async CTask InitMainAudio()
|
|
|
+ {
|
|
|
+ string config = "MainAudio.asset";
|
|
|
+ AssetHandle assetHandle =
|
|
|
+ await AssetBundleLoadManager.Instance.LoadAssetAsyncTask<AudionSettingConfig>(config);
|
|
|
+ await LoadAudio(assetHandle.AssetObject<AudionSettingConfig>());
|
|
|
+ }
|
|
|
|
|
|
public async CTask LoadAudio(AudionSettingConfig audionSettingConfig)
|
|
|
{
|
|
@@ -69,6 +76,11 @@ namespace Core.Audio
|
|
|
|
|
|
public async CTask<AudioBundleInfo> GetAduionBundleInfo(string audionName, float volume = 1)
|
|
|
{
|
|
|
+ // if (audionName.Contains('.'))
|
|
|
+ // {
|
|
|
+ // audionName = audionName.Split('.')[0];
|
|
|
+ // }
|
|
|
+
|
|
|
if (_allAduionBundleInfos.TryGetValue(audionName, out AudioBundleInfo abi))
|
|
|
{
|
|
|
return abi;
|
|
@@ -86,7 +98,7 @@ namespace Core.Audio
|
|
|
_audioSourcePools.Enqueue(audioSourcePool);
|
|
|
}
|
|
|
|
|
|
- _currPlayAudio.Remove(audioSourcePool);
|
|
|
+ _currPlayAudio.Remove(audioSourcePool.CurrPlayName);
|
|
|
}
|
|
|
|
|
|
private AudioSourcePool GetAudioSourcePool()
|
|
@@ -104,14 +116,14 @@ namespace Core.Audio
|
|
|
|
|
|
public void Stop(string audionName)
|
|
|
{
|
|
|
- for (int i = 0; i < _currPlayAudio.Count; i++)
|
|
|
- {
|
|
|
- if (_currPlayAudio[i].CurrPlayName.Equals(audionName))
|
|
|
- {
|
|
|
- _currPlayAudio[i].Finish();
|
|
|
- i--;
|
|
|
- }
|
|
|
- }
|
|
|
+ // for (int i = 0; i < _currPlayAudio.Count; i++)
|
|
|
+ // {
|
|
|
+ // if (_currPlayAudio[i].CurrPlayName.Equals(audionName))
|
|
|
+ // {
|
|
|
+ // _currPlayAudio[i].Finish();
|
|
|
+ // i--;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
public async void PlayBGM(string bgmName)
|
|
@@ -134,7 +146,7 @@ namespace Core.Audio
|
|
|
_currBgm = GetAudioSourcePool();
|
|
|
}
|
|
|
|
|
|
- _currBgm.Play(bgmName, audioClip, true);
|
|
|
+ _currBgm.Play(bgmName, audioClip, true, audioBundleInfo._volume);
|
|
|
}
|
|
|
|
|
|
public void PauseBGM()
|
|
@@ -192,17 +204,28 @@ namespace Core.Audio
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- AudioBundleInfo audioBundleInfo = await GetAduionBundleInfo(audionName);
|
|
|
-
|
|
|
- AssetHandle audioClip = await audioBundleInfo.GetAudioClip();
|
|
|
- if (audioClip == null)
|
|
|
+ using (await CoroutineLockComponent.Instance.Wait(audionName))
|
|
|
{
|
|
|
- return null;
|
|
|
+ if (_currPlayAudio.TryGetValue(audionName, out AudioSourcePool asp))
|
|
|
+ {
|
|
|
+ asp.Finish();
|
|
|
+ }
|
|
|
+
|
|
|
+ AudioBundleInfo audioBundleInfo = await GetAduionBundleInfo(audionName);
|
|
|
+
|
|
|
+ AssetHandle audioClip = await audioBundleInfo.GetAudioClip();
|
|
|
+ if (audioClip == null)
|
|
|
+ {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ AudioSourcePool audioSourcePool = GetAudioSourcePool();
|
|
|
+ audioSourcePool.Play(audionName, audioClip, isLoop, speed);
|
|
|
+ _currPlayAudio[audionName] = audioSourcePool;
|
|
|
+ return audioSourcePool;
|
|
|
}
|
|
|
|
|
|
- AudioSourcePool audioSourcePool = GetAudioSourcePool();
|
|
|
- audioSourcePool.Play(audionName, audioClip, isLoop, speed);
|
|
|
- return audioSourcePool;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public void Play(string audionName, bool isLoop)
|