修复音频播放错误
This commit is contained in:
@@ -0,0 +1,49 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace GameFramework
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 音效数据类 —— 封装 AudioClip 和音量。
|
||||||
|
/// 用于 UI 音效、游戏音效的配置。
|
||||||
|
///
|
||||||
|
/// 使用方式:
|
||||||
|
/// 1. 创建 ScriptableObject: Assets → Create → Audio Data
|
||||||
|
/// 2. 设置 AudioClip 和音量
|
||||||
|
/// 3. 拖到需要播放音效的组件上
|
||||||
|
/// </summary>
|
||||||
|
[CreateAssetMenu(fileName = "NewAudioData", menuName = "GameFramework/Audio Data")]
|
||||||
|
public class AudioData : ScriptableObject
|
||||||
|
{
|
||||||
|
[Header("音效设置")]
|
||||||
|
[Tooltip("音效剪辑")]
|
||||||
|
public AudioClip clip;
|
||||||
|
|
||||||
|
[Tooltip("音量 (0-1)")]
|
||||||
|
[Range(0f, 1f)]
|
||||||
|
public float volume = 1.0f;
|
||||||
|
|
||||||
|
[Tooltip("是否循环播放")]
|
||||||
|
public bool loop = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 播放此音效
|
||||||
|
/// </summary>
|
||||||
|
public void Play(AudioSource source)
|
||||||
|
{
|
||||||
|
if (source == null || clip == null) return;
|
||||||
|
|
||||||
|
source.loop = loop;
|
||||||
|
source.volume = volume;
|
||||||
|
|
||||||
|
if (loop)
|
||||||
|
{
|
||||||
|
source.clip = clip;
|
||||||
|
source.Play();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
source.PlayOneShot(clip, volume);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: D3pMvSKuUH1SWkWWqI1CSXJwokVRHQmfgSj0WzIXqy/Ep7AWqd3IoWo=
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -4,16 +4,6 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace GameFramework
|
namespace GameFramework
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// 音频片段数据,可挂到 ScriptableObject 或直接 SerializeField。
|
|
||||||
/// </summary>
|
|
||||||
[System.Serializable]
|
|
||||||
public class AudioData
|
|
||||||
{
|
|
||||||
public AudioClip audioClip;
|
|
||||||
[Range(0f, 1f)] public float volume = 1f;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 全局音频管理器(持久单例)。
|
/// 全局音频管理器(持久单例)。
|
||||||
/// 管理 BGM(背景音乐,循环)和 SFX(音效,一次性)。
|
/// 管理 BGM(背景音乐,循环)和 SFX(音效,一次性)。
|
||||||
@@ -93,11 +83,11 @@ namespace GameFramework
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void PlaySFX(AudioData data)
|
public void PlaySFX(AudioData data)
|
||||||
{
|
{
|
||||||
if (data == null || data.audioClip == null) return;
|
if (data == null || data.clip == null) return;
|
||||||
// sfxPlayer.volume 已在 Awake 中设为 sfxVolume,
|
// sfxPlayer.volume 已在 Awake 中设为 sfxVolume,
|
||||||
// PlayOneShot 的 volumeScale 再乘以 data.volume,
|
// PlayOneShot 的 volumeScale 再乘以 data.volume,
|
||||||
// 最终音量 = sfxVolume * data.volume
|
// 最终音量 = sfxVolume * data.volume
|
||||||
sfxPlayer.PlayOneShot(data.audioClip, data.volume);
|
sfxPlayer.PlayOneShot(data.clip, data.volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ EditorUserSettings:
|
|||||||
value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a
|
value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a
|
||||||
flags: 0
|
flags: 0
|
||||||
RecentlyUsedSceneGuid-8:
|
RecentlyUsedSceneGuid-8:
|
||||||
value: 0209025f575750595c57092149765d444e4e49727e7c7068757b1c65b6e36c3b
|
value: 5a55515156575a0b0f56592346260f444f16197c7e7f24697d2a4a32b1b0353e
|
||||||
flags: 0
|
flags: 0
|
||||||
RecentlyUsedSceneGuid-9:
|
RecentlyUsedSceneGuid-9:
|
||||||
value: 5a55515156575a0b0f56592346260f444f16197c7e7f24697d2a4a32b1b0353e
|
value: 0209025f575750595c57092149765d444e4e49727e7c7068757b1c65b6e36c3b
|
||||||
flags: 0
|
flags: 0
|
||||||
UnityEditor.ShaderGraph.Blackboard:
|
UnityEditor.ShaderGraph.Blackboard:
|
||||||
value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4ba75e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1bf968e93e2ffcbc3e7e2f0b3ffe0e8b0be9af8ffaeffff8e85dd8390e3949c8899daa7
|
value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4ba75e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1bf968e93e2ffcbc3e7e2f0b3ffe0e8b0be9af8ffaeffff8e85dd8390e3949c8899daa7
|
||||||
|
|||||||
Reference in New Issue
Block a user