修复音频播放错误

This commit is contained in:
2026-07-05 01:36:58 +08:00
parent 00499e552f
commit 904f854774
4 changed files with 64 additions and 14 deletions
+49
View File
@@ -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);
}
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: D3pMvSKuUH1SWkWWqI1CSXJwokVRHQmfgSj0WzIXqy/Ep7AWqd3IoWo=
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+2 -12
View File
@@ -4,16 +4,6 @@ using UnityEngine;
namespace GameFramework
{
/// <summary>
/// 音频片段数据,可挂到 ScriptableObject 或直接 SerializeField。
/// </summary>
[System.Serializable]
public class AudioData
{
public AudioClip audioClip;
[Range(0f, 1f)] public float volume = 1f;
}
/// <summary>
/// 全局音频管理器(持久单例)。
/// 管理 BGM(背景音乐,循环)和 SFX(音效,一次性)。
@@ -93,11 +83,11 @@ namespace GameFramework
/// </summary>
public void PlaySFX(AudioData data)
{
if (data == null || data.audioClip == null) return;
if (data == null || data.clip == null) return;
// sfxPlayer.volume 已在 Awake 中设为 sfxVolume
// PlayOneShot 的 volumeScale 再乘以 data.volume
// 最终音量 = sfxVolume * data.volume
sfxPlayer.PlayOneShot(data.audioClip, data.volume);
sfxPlayer.PlayOneShot(data.clip, data.volume);
}
/// <summary>