【a】异步播放语音添加
This commit is contained in:
@@ -61,12 +61,16 @@ namespace Stary.Evo.AudioCore
|
|||||||
|
|
||||||
void Stop(AudioData audioData);
|
void Stop(AudioData audioData);
|
||||||
|
|
||||||
|
void Stop();
|
||||||
|
|
||||||
}
|
}
|
||||||
public abstract class AbstractAudio : IAudio
|
public abstract class AbstractAudio : IAudio
|
||||||
{
|
{
|
||||||
public abstract void Play(AudioData audioData);
|
public abstract void Play(AudioData audioData);
|
||||||
|
|
||||||
public abstract void Stop(AudioData audioData);
|
public virtual void Stop(AudioData audioData){}
|
||||||
|
|
||||||
|
public virtual void Stop(){}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 音频数据初始化
|
/// 音频数据初始化
|
||||||
|
|||||||
@@ -57,8 +57,6 @@ namespace Stary.Evo.AudioCore
|
|||||||
/// <param name="audioData">{[fadeDuration:自然过渡时间]}</param>
|
/// <param name="audioData">{[fadeDuration:自然过渡时间]}</param>
|
||||||
public override void Stop(AudioData audioData)
|
public override void Stop(AudioData audioData)
|
||||||
{
|
{
|
||||||
//audioData = AudioDataInitialize(audioData);
|
|
||||||
//CoroutineHelper.StartCoroutine(FadeOutMusic(currentAudioSource, audioData.fadeDuration));
|
|
||||||
FadeAllMusic();
|
FadeAllMusic();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,15 +149,6 @@ namespace Stary.Evo.AudioCore
|
|||||||
audioSource2 = null;
|
audioSource2 = null;
|
||||||
}
|
}
|
||||||
audioSourcePool.ReturnAudioSource("Music", source.gameObject);
|
audioSourcePool.ReturnAudioSource("Music", source.gameObject);
|
||||||
|
|
||||||
/*if (currentAudioSource == audioSource1)
|
|
||||||
{
|
|
||||||
audioSource2 = null;
|
|
||||||
}
|
|
||||||
else if (currentAudioSource == audioSource2)
|
|
||||||
{
|
|
||||||
audioSource1 = null;
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FadeAllMusic()
|
private void FadeAllMusic()
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ namespace Stary.Evo.AudioCore
|
|||||||
/// 停止所有音效
|
/// 停止所有音效
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="audioData">{[无可使用变量]}</param>
|
/// <param name="audioData">{[无可使用变量]}</param>
|
||||||
public override void Stop(AudioData audioData)
|
public override void Stop()
|
||||||
{
|
{
|
||||||
if (activeSources == null) return;
|
if (activeSources == null) return;
|
||||||
foreach (var source in activeSources)
|
foreach (var source in activeSources)
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
using System.Collections;
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Stary.Evo.AudioCore
|
namespace Stary.Evo.AudioCore
|
||||||
@@ -8,7 +11,7 @@ namespace Stary.Evo.AudioCore
|
|||||||
private AudioSourcePool audioSourcePool;
|
private AudioSourcePool audioSourcePool;
|
||||||
private AudioSource currentSource;
|
private AudioSource currentSource;
|
||||||
private Coroutine myCoroutine;
|
private Coroutine myCoroutine;
|
||||||
|
private CancellationTokenSource cancelTokenSource;
|
||||||
public VoicePlayer(AudioSourcePool audioSourcePool)
|
public VoicePlayer(AudioSourcePool audioSourcePool)
|
||||||
{
|
{
|
||||||
this.audioSourcePool = audioSourcePool;
|
this.audioSourcePool = audioSourcePool;
|
||||||
@@ -21,8 +24,8 @@ namespace Stary.Evo.AudioCore
|
|||||||
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
||||||
public override void Play(AudioData audioData)
|
public override void Play(AudioData audioData)
|
||||||
{
|
{
|
||||||
// 停止当前正在播放的语音与旧协程
|
// 停止当前正在播放的语音与旧协程,或旧异步
|
||||||
Stop(new AudioData { });
|
Stop();
|
||||||
|
|
||||||
audioData = AudioDataInitialize(audioData);
|
audioData = AudioDataInitialize(audioData);
|
||||||
|
|
||||||
@@ -46,8 +49,9 @@ namespace Stary.Evo.AudioCore
|
|||||||
/// 停止语音
|
/// 停止语音
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// /// <param name="audioData">{[无可使用变量]}</param>
|
/// /// <param name="audioData">{[无可使用变量]}</param>
|
||||||
public override void Stop(AudioData audioData)
|
public override void Stop()
|
||||||
{
|
{
|
||||||
|
// 停止当前协程
|
||||||
if (currentSource != null && currentSource.isPlaying)
|
if (currentSource != null && currentSource.isPlaying)
|
||||||
{
|
{
|
||||||
currentSource.Stop();
|
currentSource.Stop();
|
||||||
@@ -58,8 +62,36 @@ namespace Stary.Evo.AudioCore
|
|||||||
CoroutineHelper.StopCoroutine(myCoroutine);
|
CoroutineHelper.StopCoroutine(myCoroutine);
|
||||||
myCoroutine = null;
|
myCoroutine = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 停掉异步任务
|
||||||
|
if (cancelTokenSource != null && cancelTokenSource.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
cancelTokenSource .Cancel();
|
||||||
|
cancelTokenSource.Dispose();
|
||||||
|
cancelTokenSource = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 异步播放语音
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="audioClip"></param>
|
||||||
|
/// <param name="volume"></param>
|
||||||
|
public async Task Play(AudioClip audioClip, float volume)
|
||||||
|
{
|
||||||
|
// 停止当前正在播放的语音与旧协程,或旧异步
|
||||||
|
Stop();
|
||||||
|
|
||||||
|
currentSource = audioSourcePool.GetAudioSource("Voice");
|
||||||
|
if (currentSource == null) return;
|
||||||
|
|
||||||
|
currentSource.clip = audioClip;
|
||||||
|
currentSource.volume = volume;
|
||||||
|
currentSource.Play();
|
||||||
|
|
||||||
|
cancelTokenSource = new CancellationTokenSource();
|
||||||
|
await Task.Delay(TimeSpan.FromSeconds(audioClip.length),cancelTokenSource.Token);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Security.Cryptography.X509Certificates;
|
using System.Security.Cryptography.X509Certificates;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Stary.Evo.AudioCore
|
namespace Stary.Evo.AudioCore
|
||||||
{
|
{
|
||||||
@@ -32,13 +33,23 @@ namespace Stary.Evo.AudioCore
|
|||||||
Voice.Play(audioData);
|
Voice.Play(audioData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 异步播放语音
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="audioClip"></param>
|
||||||
|
/// <param name="volume"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static Task PlayVoice(AudioClip audioClip, float volume = 1f)
|
||||||
|
{
|
||||||
|
return Voice.Play(audioClip, volume);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 停止当前的语音
|
/// 停止当前的语音
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void StopVoice()
|
public static void StopVoice()
|
||||||
{
|
{
|
||||||
AudioData audioData = new AudioData();
|
Voice.Stop();
|
||||||
Voice.Stop(audioData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -62,7 +73,7 @@ namespace Stary.Evo.AudioCore
|
|||||||
public static void StopAllSFX()
|
public static void StopAllSFX()
|
||||||
{
|
{
|
||||||
AudioData audioData = new AudioData();
|
AudioData audioData = new AudioData();
|
||||||
SFX.Stop(audioData);
|
SFX.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "com.staryevo.audiocore",
|
"name": "com.staryevo.audiocore",
|
||||||
"version": "1.0.9",
|
"version": "1.0.10",
|
||||||
"displayName": "04.AudioCore",
|
"displayName": "04.AudioCore",
|
||||||
"description": "音频播放工具",
|
"description": "音频播放工具",
|
||||||
"unity": "2021.3",
|
"unity": "2021.3",
|
||||||
|
|||||||
Reference in New Issue
Block a user