Skip to content

Commit

Permalink
Update AudioManager.cs
Browse files Browse the repository at this point in the history
修复音效系统BUG
  • Loading branch information
Joker-YF committed Dec 13, 2022
1 parent 07d3a6c commit f098434
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions JKFrame/Scripts/3.Service/1.Audio/AudioManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ public class AudioManager : ManagerBase<AudioManager>
{
[SerializeField]
private AudioSource BGAudioSource;
[SerializeField]
private GameObject prefab_AudioPlay;

// 场景中生效的所有特效音乐播放器
private List<AudioSource> audioPlayList = new List<AudioSource>();
Expand Down Expand Up @@ -222,9 +224,7 @@ private AudioSource GetAudioPlay(bool is3D = true)
audioPlayRoot = new GameObject("AudioPlayRoot").transform;
}
// 从对象池中获取播放器
GameObject audioPlay = PoolManager.Instance.GetGameObject("AudioPlay", audioPlayRoot);
if (audioPlay.IsNull()) audioPlay = ResManager.LoadGameObject("AudioPlay", audioPlayRoot);
AudioSource audioSource = audioPlay.GetComponent<AudioSource>();
AudioSource audioSource = PoolManager.Instance.GetGameObject<AudioSource>(prefab_AudioPlay, audioPlayRoot);
SetEffectAudioPlay(audioSource, is3D ? 1f : 0f);
audioPlayList.Add(audioSource);
return audioSource;
Expand All @@ -245,6 +245,7 @@ private IEnumerator DoRecycleAudioPlay(AudioSource audioSource, AudioClip clip,
// 放回池子
if (audioSource != null)
{
audioPlayList.Remove(audioSource);
audioSource.JKGameObjectPushPool();
// 回调 延迟 time(秒)时间
yield return new WaitForSeconds(time);
Expand Down Expand Up @@ -305,24 +306,24 @@ public void PlayOnShot(AudioClip clip, Vector3 position, float volumeScale = 1,
/// <param name="is3d">是否3D</param>
/// <param name="callBack">回调函数-在音乐播放完成后执行</param>
/// <param name="callBacKTime">回调函数在音乐播放完成后执行的延迟时间</param>
public void PlayOnShot(string clipAssetName, Component component, float volumeScale = 1, bool is3d = true, UnityAction callBack = null, float callBacKTime = 0)
public void PlayOnShot(string clipPath, Component component, float volumeScale = 1, bool is3d = true, UnityAction callBack = null, float callBacKTime = 0)
{
AudioClip audioClip = ResManager.LoadAsset<AudioClip>(clipAssetName);
AudioClip audioClip = ResManager.LoadAsset<AudioClip>(clipPath);
if (audioClip != null) PlayOnShot(audioClip, component, volumeScale, is3d, callBack, callBacKTime);
}

/// <summary>
/// 播放一次特效音乐
/// </summary>
/// <param name="clipAssetName">音效路径</param>
/// <param name="clipPath">音效路径</param>
/// <param name="position">播放的位置</param>
/// <param name="volumeScale">音量 0-1</param>
/// <param name="is3d">是否3D</param>
/// <param name="callBack">回调函数-在音乐播放完成后执行</param>
/// <param name="callBacKTime">回调函数在音乐播放完成后执行的延迟时间</param>
public void PlayOnShot(string clipAssetName, Vector3 position, float volumeScale = 1, bool is3d = true, UnityAction callBack = null, float callBacKTime = 0)
public void PlayOnShot(string clipPath, Vector3 position, float volumeScale = 1, bool is3d = true, UnityAction callBack = null, float callBacKTime = 0)
{
AudioClip audioClip = ResManager.LoadAsset<AudioClip>(clipAssetName);
AudioClip audioClip = ResManager.LoadAsset<AudioClip>(clipPath);
if (audioClip != null) PlayOnShot(audioClip, position, volumeScale, is3d, callBack, callBacKTime);
}
#endregion
Expand Down

0 comments on commit f098434

Please # to comment.