音频播放工具1.0.1
This commit is contained in:
@@ -1 +1 @@
|
|||||||
# 代码检查工具
|
# 音频播放工具
|
||||||
|
|||||||
8
Assets/04.AudioCore/RunTime/Abstract.meta
Normal file
8
Assets/04.AudioCore/RunTime/Abstract.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b4cff2e957a4add41a649e570dbabd9d
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,56 +1,56 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace AudioCore
|
namespace Stary.Evo.AudioCore
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Audio数据
|
/// Audio数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public struct AudioData
|
public struct AudioData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 延迟播放时间
|
/// 延迟播放时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float delayTime;
|
public float delayTime;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 音频
|
/// 音频
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public AudioClip clip;
|
public AudioClip clip;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 音量
|
/// 音量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float volume;
|
public float volume;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 回调行为
|
/// 回调行为
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public System.Action onComplete;
|
public System.Action onComplete;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 延迟回调执行的时间
|
/// 延迟回调执行的时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float delayOnCompleteTime;
|
public float delayOnCompleteTime;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自然过渡时间
|
/// 自然过渡时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float fadeDuration;
|
public float fadeDuration;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否不打断上一段对话
|
/// 是否不打断上一段对话
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool isNotOverVoice;
|
public bool isNotOverVoice;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否是3D声音
|
/// 是否是3D声音
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool is3D;
|
public bool is3D;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 3D声音载体
|
/// 3D声音载体
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public GameObject soundObject;
|
public GameObject soundObject;
|
||||||
}
|
}
|
||||||
@@ -69,7 +69,7 @@ namespace AudioCore
|
|||||||
public abstract void Stop(AudioData audioData);
|
public abstract void Stop(AudioData audioData);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 音频数据初始化
|
/// 音频数据初始化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="audioData"></param>
|
/// <param name="audioData"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
3
Assets/04.AudioCore/RunTime/AudioCore.RunTime.asmdef
Normal file
3
Assets/04.AudioCore/RunTime/AudioCore.RunTime.asmdef
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": "AudioCore.RunTime"
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 44e8639d57fc2a94b94ecef44bf1e36a
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/04.AudioCore/RunTime/Base.meta
Normal file
8
Assets/04.AudioCore/RunTime/Base.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f18d57a48c234514eaf0997407d2c9dd
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine.SceneManagement;
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
namespace AudioCore
|
namespace Stary.Evo.AudioCore
|
||||||
{
|
{
|
||||||
public class AudioSourcePool
|
public class AudioSourcePool
|
||||||
{
|
{
|
||||||
@@ -10,32 +10,32 @@ namespace AudioCore
|
|||||||
private GameObject poolObject;
|
private GameObject poolObject;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 对象池初始化
|
/// 对象池初始化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void PoolAwake()
|
private void PoolAwake()
|
||||||
{
|
{
|
||||||
// 检查是否已经存在一个名为"AudioSourcePool"的对象
|
// 检查是否已经存在一个名为"AudioSourcePool"的对象
|
||||||
SceneManager.sceneUnloaded += OnSceneUnloaded;
|
SceneManager.sceneUnloaded += OnSceneUnloaded;
|
||||||
poolObject = GameObject.Find("AudioSourcePool");
|
poolObject = GameObject.Find("AudioSourcePool");
|
||||||
if (poolObject == null)
|
if (poolObject == null)
|
||||||
{
|
{
|
||||||
// 如果不存在,创建一个新对象
|
// 如果不存在,创建一个新对象
|
||||||
poolObject = new GameObject("AudioSourcePool");
|
poolObject = new GameObject("AudioSourcePool");
|
||||||
}
|
}
|
||||||
CoroutineHelper.SetRunner();
|
CoroutineHelper.SetRunner();
|
||||||
|
|
||||||
// 初始化 Voice 池(最多 1 个,可动态扩展)
|
// 初始化 Voice 池(最多 1 个,可动态扩展)
|
||||||
poolDict["Voice"] = new Queue<GameObject>();
|
poolDict["Voice"] = new Queue<GameObject>();
|
||||||
CreateAudioSource("Voice");
|
CreateAudioSource("Voice");
|
||||||
|
|
||||||
// 初始化 Music 池(最多 2 个)
|
// 初始化 Music 池(最多 2 个)
|
||||||
poolDict["Music"] = new Queue<GameObject>();
|
poolDict["Music"] = new Queue<GameObject>();
|
||||||
for (int i = 0; i < 2; i++)
|
for (int i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
CreateAudioSource("Music");
|
CreateAudioSource("Music");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化 SFX 池(初始 4 个,可动态扩展)
|
// 初始化 SFX 池(初始 4 个,可动态扩展)
|
||||||
poolDict["SFX"] = new Queue<GameObject>();
|
poolDict["SFX"] = new Queue<GameObject>();
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
@@ -44,14 +44,14 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建对象
|
/// 创建对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="type">定义对象类型</param>
|
/// <param name="type">定义对象类型</param>
|
||||||
private void CreateAudioSource(string type)
|
private void CreateAudioSource(string type)
|
||||||
{
|
{
|
||||||
GameObject newObject = new GameObject($"AudioSource_{type}");
|
GameObject newObject = new GameObject($"AudioSource_{type}");
|
||||||
newObject.transform.SetParent(poolObject.transform); // 将新对象作为当前对象的子对象
|
newObject.transform.SetParent(poolObject.transform); // 将新对象作为当前对象的子对象
|
||||||
newObject.AddComponent<AudioSource>().playOnAwake = false; // 添加 AudioSource 组件并禁用自动播放
|
newObject.AddComponent<AudioSource>().playOnAwake = false; // 添加 AudioSource 组件并禁用自动播放
|
||||||
if (type == "Music")
|
if (type == "Music")
|
||||||
{
|
{
|
||||||
newObject.GetComponent<AudioSource>().loop = true;
|
newObject.GetComponent<AudioSource>().loop = true;
|
||||||
@@ -60,7 +60,7 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取对象
|
/// 获取对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="type"></param>
|
/// <param name="type"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
@@ -73,20 +73,20 @@ namespace AudioCore
|
|||||||
|
|
||||||
if (!poolDict.ContainsKey(type))
|
if (!poolDict.ContainsKey(type))
|
||||||
{
|
{
|
||||||
Debug.LogError($"对象池中不存在类型: {type}");
|
Debug.LogError($"对象池中不存在类型: {type}");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (poolDict[type].Count == 0)
|
if (poolDict[type].Count == 0)
|
||||||
{
|
{
|
||||||
// 如果池为空,动态创建新的 GameObject(仅限 SFX 与 Voice)
|
// 如果池为空,动态创建新的 GameObject(仅限 SFX 与 Voice)
|
||||||
if (type == "SFX" && type == "Voice")
|
if (type == "SFX" && type == "Voice")
|
||||||
{
|
{
|
||||||
CreateAudioSource(type);
|
CreateAudioSource(type);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.LogWarning($"对象池 {type} 已用完,无法分配新的 AudioSource");
|
Debug.LogWarning($"对象池 {type} 已用完,无法分配新的 AudioSource");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 回收对象
|
/// 回收对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="type"></param>
|
/// <param name="type"></param>
|
||||||
/// <param name="audioObject"></param>
|
/// <param name="audioObject"></param>
|
||||||
@@ -107,19 +107,19 @@ namespace AudioCore
|
|||||||
{
|
{
|
||||||
if (!poolDict.ContainsKey(type))
|
if (!poolDict.ContainsKey(type))
|
||||||
{
|
{
|
||||||
Debug.LogError($"对象池中不存在类型: {type}");
|
Debug.LogError($"对象池中不存在类型: {type}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AudioSource audioSource = audioObject.GetComponent<AudioSource>();
|
AudioSource audioSource = audioObject.GetComponent<AudioSource>();
|
||||||
audioSource.Stop(); // 停止播放
|
audioSource.Stop(); // 停止播放
|
||||||
audioSource.clip = null; // 清空音频剪辑
|
audioSource.clip = null; // 清空音频剪辑
|
||||||
audioSource.volume = 1f; // 音量大小恢复
|
audioSource.volume = 1f; // 音量大小恢复
|
||||||
poolDict[type].Enqueue(audioObject); // 回收到对象池
|
poolDict[type].Enqueue(audioObject); // 回收到对象池
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 场景销毁时清空对象池
|
/// 场景销毁时清空对象池
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="scene"></param>
|
/// <param name="scene"></param>
|
||||||
void OnSceneUnloaded(Scene scene)
|
void OnSceneUnloaded(Scene scene)
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Internal;
|
using UnityEngine.Internal;
|
||||||
|
|
||||||
namespace AudioCore
|
namespace Stary.Evo.AudioCore
|
||||||
{
|
{
|
||||||
public static class CoroutineHelper
|
public static class CoroutineHelper
|
||||||
{
|
{
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace AudioCore
|
namespace Stary.Evo.AudioCore
|
||||||
{
|
{
|
||||||
public class MusicPlayer : AbstractAudio
|
public class MusicPlayer : AbstractAudio
|
||||||
{
|
{
|
||||||
@@ -16,9 +16,9 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 播放背景音乐
|
/// 播放背景音乐
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="audioData">{[clip:音频], [volume:音量], [fadeDuration:自然过渡时间]}</param>
|
/// <param name="audioData">{[clip:音频], [volume:音量], [fadeDuration:自然过渡时间]}</param>
|
||||||
public override void Play(AudioData audioData)
|
public override void Play(AudioData audioData)
|
||||||
{
|
{
|
||||||
audioData = AudioDataInitialize(audioData);
|
audioData = AudioDataInitialize(audioData);
|
||||||
@@ -44,16 +44,16 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.LogWarning("已同时存在两个背景乐在切换");
|
Debug.LogWarning("已同时存在两个背景乐在切换");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 关闭背景音乐
|
/// 关闭背景音乐
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <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);
|
audioData = AudioDataInitialize(audioData);
|
||||||
@@ -61,11 +61,11 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 切换音频
|
/// 切换音频
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="source1">播放的音频</param>
|
/// <param name="source1">播放的音频</param>
|
||||||
/// <param name="fadeDuration">变化时间</param>
|
/// <param name="fadeDuration">变化时间</param>
|
||||||
/// <param name="source2">停止的音频</param>
|
/// <param name="source2">停止的音频</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private IEnumerator FadeMusic(AudioSource source1, float fadeDuration, AudioSource source2 = null)
|
private IEnumerator FadeMusic(AudioSource source1, float fadeDuration, AudioSource source2 = null)
|
||||||
{
|
{
|
||||||
@@ -79,7 +79,7 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 关闭音频的协程
|
/// 关闭音频的协程
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="source"></param>
|
/// <param name="source"></param>
|
||||||
/// <param name="fadeDuration"></param>
|
/// <param name="fadeDuration"></param>
|
||||||
@@ -108,7 +108,7 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 开启音频的协程
|
/// 开启音频的协程
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="source"></param>
|
/// <param name="source"></param>
|
||||||
/// <param name="fadeDuration"></param>
|
/// <param name="fadeDuration"></param>
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace AudioCore
|
namespace Stary.Evo.AudioCore
|
||||||
{
|
{
|
||||||
public class SFXPlayer : AbstractAudio
|
public class SFXPlayer : AbstractAudio
|
||||||
{
|
{
|
||||||
private AudioSourcePool audioSourcePool;
|
private AudioSourcePool audioSourcePool;
|
||||||
private List<AudioSource> activeSources = new List<AudioSource>(); // 正在播放的 AudioSource 列表
|
private List<AudioSource> activeSources = new List<AudioSource>(); // 正在播放的 AudioSource 列表
|
||||||
|
|
||||||
public SFXPlayer(AudioSourcePool audioSourcePool)
|
public SFXPlayer(AudioSourcePool audioSourcePool)
|
||||||
{
|
{
|
||||||
@@ -15,10 +15,10 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 播放音效
|
/// 播放音效
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="audioData">{[clip:音频], [volume:音量],
|
/// <param name="audioData">{[clip:音频], [volume:音量],
|
||||||
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
||||||
public override void Play(AudioData audioData)
|
public override void Play(AudioData audioData)
|
||||||
{
|
{
|
||||||
AudioSource source = audioSourcePool.GetAudioSource("SFX");
|
AudioSource source = audioSourcePool.GetAudioSource("SFX");
|
||||||
@@ -28,17 +28,17 @@ namespace AudioCore
|
|||||||
source.volume = audioData.volume;
|
source.volume = audioData.volume;
|
||||||
source.Play();
|
source.Play();
|
||||||
|
|
||||||
// 将 AudioSource 加入活动列表
|
// 将 AudioSource 加入活动列表
|
||||||
activeSources.Add(source);
|
activeSources.Add(source);
|
||||||
|
|
||||||
// 使用协程处理延迟和回调
|
// 使用协程处理延迟和回调
|
||||||
CoroutineHelper.StartCoroutine(PlaySFXCoroutine(source, audioData.delayOnCompleteTime, audioData.onComplete));
|
CoroutineHelper.StartCoroutine(PlaySFXCoroutine(source, audioData.delayOnCompleteTime, audioData.onComplete));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 停止所有音效
|
/// 停止所有音效
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="audioData">{[无可使用变量]}</param>
|
/// <param name="audioData">{[无可使用变量]}</param>
|
||||||
public override void Stop(AudioData audioData)
|
public override void Stop(AudioData audioData)
|
||||||
{
|
{
|
||||||
foreach (var source in activeSources)
|
foreach (var source in activeSources)
|
||||||
@@ -53,7 +53,7 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 播放音效的协程
|
/// 播放音效的协程
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="source"></param>
|
/// <param name="source"></param>
|
||||||
/// <param name="delay"></param>
|
/// <param name="delay"></param>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace AudioCore
|
namespace Stary.Evo.AudioCore
|
||||||
{
|
{
|
||||||
public class VoicePlayer : AbstractAudio
|
public class VoicePlayer : AbstractAudio
|
||||||
{
|
{
|
||||||
@@ -15,13 +15,13 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 播放语音
|
/// 播放语音
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="audioData">{[clip:音频], [volume:音量],
|
/// <param name="audioData">{[clip:音频], [volume:音量],
|
||||||
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
||||||
public override void Play(AudioData audioData)
|
public override void Play(AudioData audioData)
|
||||||
{
|
{
|
||||||
// 停止当前正在播放的语音与旧协程
|
// 停止当前正在播放的语音与旧协程
|
||||||
Stop(new AudioData { });
|
Stop(new AudioData { });
|
||||||
|
|
||||||
audioData = AudioDataInitialize(audioData);
|
audioData = AudioDataInitialize(audioData);
|
||||||
@@ -38,14 +38,14 @@ namespace AudioCore
|
|||||||
currentSource.volume = audioData.volume;
|
currentSource.volume = audioData.volume;
|
||||||
currentSource.Play();
|
currentSource.Play();
|
||||||
|
|
||||||
// 使用协程处理延迟和回调
|
// 使用协程处理延迟和回调
|
||||||
myCoroutine = CoroutineHelper.StartCoroutine(PlayVoiceCoroutine(currentSource, audioData.delayOnCompleteTime, audioData.onComplete));
|
myCoroutine = CoroutineHelper.StartCoroutine(PlayVoiceCoroutine(currentSource, audioData.delayOnCompleteTime, audioData.onComplete));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 停止语音
|
/// 停止语音
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// /// <param name="audioData">{[无可使用变量]}</param>
|
/// /// <param name="audioData">{[无可使用变量]}</param>
|
||||||
public override void Stop(AudioData audioData)
|
public override void Stop(AudioData audioData)
|
||||||
{
|
{
|
||||||
if (currentSource != null && currentSource.isPlaying)
|
if (currentSource != null && currentSource.isPlaying)
|
||||||
@@ -57,7 +57,7 @@ namespace AudioCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 播放语音的协程
|
/// 播放语音的协程
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="source"></param>
|
/// <param name="source"></param>
|
||||||
/// <param name="delayOnComplete"></param>
|
/// <param name="delayOnComplete"></param>
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.SceneManagement;
|
|
||||||
using AudioCore;
|
|
||||||
|
|
||||||
public class Test : MonoBehaviour
|
|
||||||
{
|
|
||||||
public AudioClip clip1;
|
|
||||||
public AudioClip clip2;
|
|
||||||
public AudioClip clip21;
|
|
||||||
public AudioClip clip22;
|
|
||||||
public AudioClip clip31;
|
|
||||||
public AudioClip clip32;
|
|
||||||
|
|
||||||
void Start()
|
|
||||||
{
|
|
||||||
//AudioCore.PlayerPrefs();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Update()
|
|
||||||
{
|
|
||||||
if (Input.GetKeyDown(KeyCode.A))
|
|
||||||
{
|
|
||||||
AudioCoreManager.PlayVoice(new AudioData { clip = clip1 });
|
|
||||||
}
|
|
||||||
if (Input.GetKeyDown(KeyCode.S))
|
|
||||||
{
|
|
||||||
AudioCoreManager.PlayVoice(new AudioData { clip = clip2 });
|
|
||||||
}
|
|
||||||
if (Input.GetKeyDown(KeyCode.D))
|
|
||||||
{
|
|
||||||
AudioCoreManager.PlaySFX(new AudioData { clip = clip21 });
|
|
||||||
}
|
|
||||||
if (Input.GetKeyDown(KeyCode.F))
|
|
||||||
{
|
|
||||||
AudioCoreManager.PlaySFX(new AudioData { clip = clip22 });
|
|
||||||
}
|
|
||||||
if (Input.GetKeyDown(KeyCode.G))
|
|
||||||
{
|
|
||||||
AudioCoreManager.PlayMusic(new AudioData { clip = clip31 });
|
|
||||||
}
|
|
||||||
if (Input.GetKeyDown(KeyCode.H))
|
|
||||||
{
|
|
||||||
AudioCoreManager.PlayMusic(new AudioData { clip = clip32 });
|
|
||||||
}
|
|
||||||
if (Input.GetKeyDown(KeyCode.Z))
|
|
||||||
{
|
|
||||||
AudioCoreManager.StopVoice();
|
|
||||||
}
|
|
||||||
if (Input.GetKeyDown(KeyCode.X))
|
|
||||||
{
|
|
||||||
AudioCoreManager.StopAllSFX();
|
|
||||||
}
|
|
||||||
if (Input.GetKeyDown(KeyCode.C))
|
|
||||||
{
|
|
||||||
AudioCoreManager.StopMusic();
|
|
||||||
}
|
|
||||||
if (Input.GetKeyDown(KeyCode.Space))
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2cca50490fb28574697c5fd3d2d37b52
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
8
Assets/04.AudioCore/RunTime/Use.meta
Normal file
8
Assets/04.AudioCore/RunTime/Use.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4ffae49923bf0d34e9da8ee451f962f8
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace AudioCore
|
namespace Stary.Evo.AudioCore
|
||||||
{
|
{
|
||||||
public static class AudioCoreManager
|
public static class AudioCoreManager
|
||||||
{
|
{
|
||||||
@@ -13,26 +13,26 @@ namespace AudioCore
|
|||||||
static AudioCoreManager()
|
static AudioCoreManager()
|
||||||
{
|
{
|
||||||
audioSourcePool = new AudioSourcePool();
|
audioSourcePool = new AudioSourcePool();
|
||||||
// 初始化播放器
|
// 初始化播放器
|
||||||
Voice = new VoicePlayer(audioSourcePool);
|
Voice = new VoicePlayer(audioSourcePool);
|
||||||
SFX = new SFXPlayer(audioSourcePool);
|
SFX = new SFXPlayer(audioSourcePool);
|
||||||
Music = new MusicPlayer(audioSourcePool);
|
Music = new MusicPlayer(audioSourcePool);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 语音
|
#region 语音
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 播放语音
|
/// 播放语音
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="audioData">{[clip:音频], [volume:音量],
|
/// <param name="audioData">{[clip:音频], [volume:音量],
|
||||||
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
||||||
public static void PlayVoice(AudioData audioData)
|
public static void PlayVoice(AudioData audioData)
|
||||||
{
|
{
|
||||||
Voice.Play(audioData);
|
Voice.Play(audioData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 停止当前的语音
|
/// 停止当前的语音
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void StopVoice()
|
public static void StopVoice()
|
||||||
{
|
{
|
||||||
@@ -42,20 +42,20 @@ namespace AudioCore
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 音效
|
#region 音效
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 播放音效
|
/// 播放音效
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="audioData">{[clip:音频], [volume:音量],
|
/// <param name="audioData">{[clip:音频], [volume:音量],
|
||||||
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
/// [onComplete:回调行为], [delayOnCompleteTime:延迟回调执行的时间]}</param>
|
||||||
public static void PlaySFX(AudioData audioData)
|
public static void PlaySFX(AudioData audioData)
|
||||||
{
|
{
|
||||||
SFX.Play(audioData);
|
SFX.Play(audioData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 停止所有音效
|
/// 停止所有音效
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void StopAllSFX()
|
public static void StopAllSFX()
|
||||||
{
|
{
|
||||||
@@ -65,21 +65,21 @@ namespace AudioCore
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 背景音乐
|
#region 背景音乐
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 播放背景音乐
|
/// 播放背景音乐
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="audioData">{[clip:音频], [volume:音量], [fadeDuration:自然过渡时间]}</param>
|
/// <param name="audioData">{[clip:音频], [volume:音量], [fadeDuration:自然过渡时间]}</param>
|
||||||
public static void PlayMusic(AudioData audioData)
|
public static void PlayMusic(AudioData audioData)
|
||||||
{
|
{
|
||||||
Music.Play(audioData);
|
Music.Play(audioData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 停止播放背景音乐
|
/// 停止播放背景音乐
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="fadeDuration">自然过渡时间</param>
|
/// <param name="fadeDuration">自然过渡时间</param>
|
||||||
public static void StopMusic(float fadeDuration = 1f)
|
public static void StopMusic(float fadeDuration = 1f)
|
||||||
{
|
{
|
||||||
AudioData audioData = new AudioData();
|
AudioData audioData = new AudioData();
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "com.staryevo.audiocore",
|
"name": "com.staryevo.audiocore",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"displayName": "04.AudioCore",
|
"displayName": "04.AudioCore",
|
||||||
"description": "音频播放工具",
|
"description": "音频播放工具",
|
||||||
"unity": "2021.3",
|
"unity": "2021.3",
|
||||||
"unityRelease": "30f1",
|
"unityRelease": "23f1",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"unity",
|
"unity",
|
||||||
"scirpt"
|
"scirpt"
|
||||||
|
|||||||
Reference in New Issue
Block a user