From 904f85477478cbc099e9842d772c2663211a9434 Mon Sep 17 00:00:00 2001
From: keshaohong <740612340@qq.com>
Date: Sun, 5 Jul 2026 01:36:58 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9F=B3=E9=A2=91=E6=92=AD?=
=?UTF-8?q?=E6=94=BE=E9=94=99=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
unity/Assets/UI/AudioData.cs | 49 +++++++++++++++++++++
unity/Assets/UI/AudioData.cs.meta | 11 +++++
unity/Assets/UI/AudioManager.cs | 14 +-----
unity/UserSettings/EditorUserSettings.asset | 4 +-
4 files changed, 64 insertions(+), 14 deletions(-)
create mode 100644 unity/Assets/UI/AudioData.cs
create mode 100644 unity/Assets/UI/AudioData.cs.meta
diff --git a/unity/Assets/UI/AudioData.cs b/unity/Assets/UI/AudioData.cs
new file mode 100644
index 0000000..6462ee5
--- /dev/null
+++ b/unity/Assets/UI/AudioData.cs
@@ -0,0 +1,49 @@
+using UnityEngine;
+
+namespace GameFramework
+{
+ ///
+ /// 音效数据类 —— 封装 AudioClip 和音量。
+ /// 用于 UI 音效、游戏音效的配置。
+ ///
+ /// 使用方式:
+ /// 1. 创建 ScriptableObject: Assets → Create → Audio Data
+ /// 2. 设置 AudioClip 和音量
+ /// 3. 拖到需要播放音效的组件上
+ ///
+ [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;
+
+ ///
+ /// 播放此音效
+ ///
+ 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);
+ }
+ }
+ }
+}
diff --git a/unity/Assets/UI/AudioData.cs.meta b/unity/Assets/UI/AudioData.cs.meta
new file mode 100644
index 0000000..ef7b38d
--- /dev/null
+++ b/unity/Assets/UI/AudioData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: D3pMvSKuUH1SWkWWqI1CSXJwokVRHQmfgSj0WzIXqy/Ep7AWqd3IoWo=
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity/Assets/UI/AudioManager.cs b/unity/Assets/UI/AudioManager.cs
index 9731c52..3c48c56 100644
--- a/unity/Assets/UI/AudioManager.cs
+++ b/unity/Assets/UI/AudioManager.cs
@@ -4,16 +4,6 @@ using UnityEngine;
namespace GameFramework
{
- ///
- /// 音频片段数据,可挂到 ScriptableObject 或直接 SerializeField。
- ///
- [System.Serializable]
- public class AudioData
- {
- public AudioClip audioClip;
- [Range(0f, 1f)] public float volume = 1f;
- }
-
///
/// 全局音频管理器(持久单例)。
/// 管理 BGM(背景音乐,循环)和 SFX(音效,一次性)。
@@ -93,11 +83,11 @@ namespace GameFramework
///
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);
}
///
diff --git a/unity/UserSettings/EditorUserSettings.asset b/unity/UserSettings/EditorUserSettings.asset
index 3f9c886..0e02cd4 100644
--- a/unity/UserSettings/EditorUserSettings.asset
+++ b/unity/UserSettings/EditorUserSettings.asset
@@ -30,10 +30,10 @@ EditorUserSettings:
value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a
flags: 0
RecentlyUsedSceneGuid-8:
- value: 0209025f575750595c57092149765d444e4e49727e7c7068757b1c65b6e36c3b
+ value: 5a55515156575a0b0f56592346260f444f16197c7e7f24697d2a4a32b1b0353e
flags: 0
RecentlyUsedSceneGuid-9:
- value: 5a55515156575a0b0f56592346260f444f16197c7e7f24697d2a4a32b1b0353e
+ value: 0209025f575750595c57092149765d444e4e49727e7c7068757b1c65b6e36c3b
flags: 0
UnityEditor.ShaderGraph.Blackboard:
value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4ba75e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1bf968e93e2ffcbc3e7e2f0b3ffe0e8b0be9af8ffaeffff8e85dd8390e3949c8899daa7