diff --git a/Assets/Scenes/main.unity b/Assets/Scenes/main.unity
index e8f46690..2336b3ff 100644
--- a/Assets/Scenes/main.unity
+++ b/Assets/Scenes/main.unity
@@ -132,8 +132,9 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 23410075}
+ - component: {fileID: 23410076}
m_Layer: 0
- m_Name: Sound
+ m_Name: Audio
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@@ -153,6 +154,41 @@ Transform:
m_Father: {fileID: 2061060682}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &23410076
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 23410074}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 13dea64094ab4501ba913acb560888fc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_AudioMixer: {fileID: 0}
+ m_InstanceRoot: {fileID: 0}
+ m_AudioGroupConfigs:
+ - m_Name: Music
+ m_Mute: 0
+ m_Volume: 1
+ m_AgentHelperCount: 1
+ AudioType: 2
+ - m_Name: Sound
+ m_Mute: 0
+ m_Volume: 1
+ m_AgentHelperCount: 4
+ AudioType: 0
+ - m_Name: UISound
+ m_Mute: 0
+ m_Volume: 1
+ m_AgentHelperCount: 4
+ AudioType: 1
+ - m_Name: Voice
+ m_Mute: 0
+ m_Volume: 1
+ m_AgentHelperCount: 1
+ AudioType: 3
--- !u!1 &43232119
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/TEngine/Editor/Inspector/AudioModuleInspector.cs b/Assets/TEngine/Editor/Inspector/AudioModuleInspector.cs
new file mode 100644
index 00000000..56db5d1b
--- /dev/null
+++ b/Assets/TEngine/Editor/Inspector/AudioModuleInspector.cs
@@ -0,0 +1,54 @@
+using UnityEditor;
+
+namespace TEngine.Editor.Inspector
+{
+ [CustomEditor(typeof(AudioModule))]
+ internal sealed class AudioModuleInspector : GameFrameworkInspector
+ {
+ private SerializedProperty m_InstanceRoot = null;
+ private SerializedProperty m_AudioMixer = null;
+ private SerializedProperty m_AudioGroupConfigs = null;
+
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+
+ serializedObject.Update();
+
+ AudioModule t = (AudioModule)target;
+
+ EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
+ {
+ EditorGUILayout.PropertyField(m_InstanceRoot);
+ EditorGUILayout.PropertyField(m_AudioMixer);
+
+ EditorGUILayout.PropertyField(m_AudioGroupConfigs, true);
+ }
+ EditorGUI.EndDisabledGroup();
+
+ serializedObject.ApplyModifiedProperties();
+
+ Repaint();
+ }
+
+ protected override void OnCompileComplete()
+ {
+ base.OnCompileComplete();
+
+ RefreshTypeNames();
+ }
+
+ private void OnEnable()
+ {
+ m_InstanceRoot = serializedObject.FindProperty("m_InstanceRoot");
+ m_AudioMixer = serializedObject.FindProperty("m_AudioMixer");
+ m_AudioGroupConfigs = serializedObject.FindProperty("m_AudioGroupConfigs");
+ RefreshTypeNames();
+ }
+
+ private void RefreshTypeNames()
+ {
+ serializedObject.ApplyModifiedProperties();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/TEngine/Editor/Inspector/AudioModuleInspector.cs.meta b/Assets/TEngine/Editor/Inspector/AudioModuleInspector.cs.meta
new file mode 100644
index 00000000..b1170290
--- /dev/null
+++ b/Assets/TEngine/Editor/Inspector/AudioModuleInspector.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 9fbe8a4bfe264e02b4ccd7581bc71c53
+timeCreated: 1680767939
\ No newline at end of file
diff --git a/Assets/TEngine/ResRaw/AudioMixer.mixer b/Assets/TEngine/ResRaw/AudioMixer.mixer
deleted file mode 100644
index 100a12cd..00000000
--- a/Assets/TEngine/ResRaw/AudioMixer.mixer
+++ /dev/null
@@ -1,415 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!241 &24100000
-AudioMixerController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: AudioMixer
- m_OutputGroup: {fileID: 0}
- m_MasterGroup: {fileID: 24300001}
- m_Snapshots:
- - {fileID: 24500003}
- m_StartSnapshot: {fileID: 24500003}
- m_SuspendThreshold: -80
- m_EnableSuspend: 1
- m_UpdateMode: 0
- m_ExposedParameters: []
- m_AudioMixerGroupViews:
- - guids:
- - 8a5e3c3ba4888544fb60c42cf8e09967
- - 160fccef83772ba4ba230254a8550a7f
- - 867c8e0f47093374ebcaac2c987f793b
- - 6d1a380bc9dd3f9419b15e7ebc5c685a
- - 1fa2b24e8fa2ab44da6b736c6b69e39d
- - 00a460acccbeac742a73e52befc575a7
- - 79d2503840615b649bc92fb576713dbd
- - 528e752989911d248b7dcbef7f1507ed
- - 6fe43d36061d5524ba35671cf9fb0ba8
- - d04e746ae07ef14459e5fb5e0dc16c71
- - 452a895339109c64396d99ebc8b9be69
- - 4eae43e074960204bb5cd44ec6aa8995
- name: View
- m_CurrentViewIndex: 0
- m_TargetSnapshot: {fileID: 24500003}
---- !u!243 &24300001
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Master
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 8a5e3c3ba4888544fb60c42cf8e09967
- m_Children:
- - {fileID: 24379484}
- - {fileID: 24302904}
- - {fileID: 24387166}
- m_Volume: 395141a4fa3844d43889bdb6a8069296
- m_Pitch: 11316f08788c67243b0bcb1ffe96b68d
- m_Effects:
- - {fileID: 24400002}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24302904
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Sound
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 867c8e0f47093374ebcaac2c987f793b
- m_Children:
- - {fileID: 24367036}
- - {fileID: 24343976}
- - {fileID: 24357292}
- - {fileID: 24391798}
- m_Volume: c48cf9e85f38efb40b87a6ee32814d12
- m_Pitch: cc7d3a20aefbbd34c988ad7abad44062
- m_Effects:
- - {fileID: 24489248}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24315210
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: 1
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 6fe43d36061d5524ba35671cf9fb0ba8
- m_Children: []
- m_Volume: 3a139d66d2f3c784b9d5e753fec00667
- m_Pitch: 4e1c6fb713ccfff488fed4d276d843d4
- m_Effects:
- - {fileID: 24435296}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24343976
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: 1
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 1fa2b24e8fa2ab44da6b736c6b69e39d
- m_Children: []
- m_Volume: ed28a7635ab0bb340a5665f156be3ba2
- m_Pitch: 93e175d11861ed44693c4de3d1dfd0e5
- m_Effects:
- - {fileID: 24439702}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24357292
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: 2
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 00a460acccbeac742a73e52befc575a7
- m_Children: []
- m_Volume: 1a2c14ec670b45240afe05419dce2f83
- m_Pitch: 051a281f9cef07b48b6115f92e7ca07e
- m_Effects:
- - {fileID: 24473274}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24367036
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: 0
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 6d1a380bc9dd3f9419b15e7ebc5c685a
- m_Children: []
- m_Volume: 826a3f833bcd55e4b85f3910ab1fcca2
- m_Pitch: 8a1be3b2accbf6046911ccf02317b9d0
- m_Effects:
- - {fileID: 24409188}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24374858
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: 2
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: d04e746ae07ef14459e5fb5e0dc16c71
- m_Children: []
- m_Volume: 53955d9c33630ad4bbd584245387610c
- m_Pitch: 08bc99fca5e21ad4ca2281a26d22d603
- m_Effects:
- - {fileID: 24415236}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24375398
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: 3
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 452a895339109c64396d99ebc8b9be69
- m_Children: []
- m_Volume: 6d0c2ba3dfe81c64a8168eaf8cb979b8
- m_Pitch: 1c3e45e2b43fe894b9416639a2649958
- m_Effects:
- - {fileID: 24434744}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24377080
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: 0
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 528e752989911d248b7dcbef7f1507ed
- m_Children: []
- m_Volume: 123025e4c7c0e554c9f6d6bc1b3fbc77
- m_Pitch: e9f9047e46520a2488d63f376e250fd5
- m_Effects:
- - {fileID: 24467928}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24379484
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Music
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 160fccef83772ba4ba230254a8550a7f
- m_Children: []
- m_Volume: 5c6b3018726f578439e2ffc2a2699659
- m_Pitch: 1f9a468138008494e99d93d1492d2d2d
- m_Effects:
- - {fileID: 24434106}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24387166
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: UISound
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 4eae43e074960204bb5cd44ec6aa8995
- m_Children:
- - {fileID: 24377080}
- - {fileID: 24315210}
- - {fileID: 24374858}
- - {fileID: 24375398}
- m_Volume: 259c8cab700e5054b90a4c436aa9dbaa
- m_Pitch: 62833d02f1ae1004189dafbecb776876
- m_Effects:
- - {fileID: 24425112}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!243 &24391798
-AudioMixerGroupController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: 3
- m_AudioMixer: {fileID: 24100000}
- m_GroupID: 79d2503840615b649bc92fb576713dbd
- m_Children: []
- m_Volume: 1826ad84da2bc184aa1c1cf638110b2c
- m_Pitch: 62f786f4ed7eaeb4eb873e84cd4acef5
- m_Effects:
- - {fileID: 24425178}
- m_UserColorIndex: 0
- m_Mute: 0
- m_Solo: 0
- m_BypassEffects: 0
---- !u!244 &24400002
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name:
- m_EffectID: 491cbf7854837e144bc3560590a7d822
- m_EffectName: Attenuation
- m_MixLevel: 20e1d9c971c4b8b4291f83fd0e476cbc
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24409188
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name:
- m_EffectID: b77fb195be8459742b29cc98e1f5917d
- m_EffectName: Attenuation
- m_MixLevel: 667ff9ce44dc1f641985c633b4c61a89
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24415236
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Attenuation
- m_EffectID: 686cf9964bf072d489573880e1caacc4
- m_EffectName: Attenuation
- m_MixLevel: c6e4da47d5135364d856abcdb79c854b
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24425112
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Attenuation
- m_EffectID: a484d4fccfe70b0409e1f4dd2c87648b
- m_EffectName: Attenuation
- m_MixLevel: 7158168627f558543a28925969c2be1a
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24425178
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Attenuation
- m_EffectID: c5acd505b4e335e4a93860f18c380916
- m_EffectName: Attenuation
- m_MixLevel: 9d409a5ff0aacc342965b25006706804
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24434106
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name:
- m_EffectID: 2cacbff4660331449ad79b3b0a29f114
- m_EffectName: Attenuation
- m_MixLevel: 8791ffee31c792c40a9d5c2834f893b6
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24434744
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Attenuation
- m_EffectID: eb1f3be358602a446881583e889b9dce
- m_EffectName: Attenuation
- m_MixLevel: 2430ea18a7e6c2543860747f489a6747
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24435296
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Attenuation
- m_EffectID: 05bda5e2032dae240a34e252fa629cab
- m_EffectName: Attenuation
- m_MixLevel: de2a5d58be3b6ea4f99dc5ecaf7b34b3
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24439702
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Attenuation
- m_EffectID: e96761f494e22ec4bb95f6c4c69a81e3
- m_EffectName: Attenuation
- m_MixLevel: 53c7a2925014d7141b81deead5900deb
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24467928
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Attenuation
- m_EffectID: 107756d9ceff73c4eb7e24c4015f49af
- m_EffectName: Attenuation
- m_MixLevel: cbb295bb1f83ee844b5fe421a69a1b86
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24473274
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Attenuation
- m_EffectID: 0f20f30c1f379d44f86056174d8a8fe1
- m_EffectName: Attenuation
- m_MixLevel: 118b9c139b92282439916745f10f6898
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!244 &24489248
-AudioMixerEffectController:
- m_ObjectHideFlags: 3
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Attenuation
- m_EffectID: e3266aa86a4cdab48bca8db85ecd6c48
- m_EffectName: Attenuation
- m_MixLevel: 16c2452fadb847a40a5361ef769ced7a
- m_Parameters: []
- m_SendTarget: {fileID: 0}
- m_EnableWetMix: 0
- m_Bypass: 0
---- !u!245 &24500003
-AudioMixerSnapshotController:
- m_ObjectHideFlags: 0
- m_PrefabParentObject: {fileID: 0}
- m_PrefabInternal: {fileID: 0}
- m_Name: Snapshot
- m_AudioMixer: {fileID: 24100000}
- m_SnapshotID: 94391cc7a50443d40bfb1ee6b9835ebe
- m_FloatValues: {}
- m_TransitionOverrides: {}
diff --git a/Assets/TEngine/ResRaw/AudioMixer.mixer.meta b/Assets/TEngine/ResRaw/AudioMixer.mixer.meta
deleted file mode 100644
index adc8c4c1..00000000
--- a/Assets/TEngine/ResRaw/AudioMixer.mixer.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 0f5b0f1b1b7760c458f2fefab02f273b
-NativeFormatImporter:
- externalObjects: {}
- mainObjectFileID: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/AudioData.cs b/Assets/TEngine/Runtime/GameFramework/Audio/AudioAgent.cs
similarity index 65%
rename from Assets/TEngine/Runtime/GameFramework/Audio/AudioData.cs
rename to Assets/TEngine/Runtime/GameFramework/Audio/AudioAgent.cs
index 802ae1cb..819b99e3 100644
--- a/Assets/TEngine/Runtime/GameFramework/Audio/AudioData.cs
+++ b/Assets/TEngine/Runtime/GameFramework/Audio/AudioAgent.cs
@@ -1,13 +1,18 @@
using UnityEngine;
using UnityEngine.Audio;
+using YooAsset;
namespace TEngine
{
- public class AudioData
+ ///
+ /// 声音代理辅助器。
+ ///
+ public class AudioAgent
{
- int _id = 0;
- public AssetData _assetData = null;
- public AudioSource _source = null;
+ private AudioModule _audioModule;
+ private int _id = 0;
+ public AssetOperationHandle assetOperationHandle = null;
+ private AudioSource _source = null;
Transform _transform = null;
float _volume = 1.0f;
float _duration = 0;
@@ -34,10 +39,7 @@ namespace TEngine
LoadRequest _pendingLoad = null;
- public int ID
- {
- get { return _id; }
- }
+ public int ID => _id;
public float Volume
{
@@ -49,7 +51,7 @@ namespace TEngine
_source.volume = _volume;
}
}
- get { return _volume; }
+ get => _volume;
}
public bool IsFinish
@@ -57,16 +59,17 @@ namespace TEngine
get
{
if (_source != null)
+ {
return _state == State.End;
+ }
else
+ {
return true;
+ }
}
}
- public float Duration
- {
- get { return _duration; }
- }
+ public float Duration => _duration;
public float Length
{
@@ -83,8 +86,8 @@ namespace TEngine
public Vector3 Position
{
- get { return _transform.position; }
- set { _transform.position = value; }
+ get => _transform.position;
+ set => _transform.position = value;
}
public bool IsLoop
@@ -92,14 +95,20 @@ namespace TEngine
get
{
if (_source != null)
+ {
return _source.loop;
+ }
else
+ {
return false;
+ }
}
set
{
if (_source != null)
+ {
_source.loop = value;
+ }
}
}
@@ -123,24 +132,25 @@ namespace TEngine
return _source;
}
- public static AudioData Create(string path, bool bAsync, AudioMixerGroup audioMixerGroup, bool bInPool = false)
+ public static AudioAgent Create(string path, bool bAsync, AudioCategory audioCategory, bool bInPool = false)
{
- AudioData audioData = new AudioData();
- audioData.Init(audioMixerGroup);
- audioData.Load(path, bAsync, bInPool);
-
- return audioData;
+ AudioAgent audioAgent = new AudioAgent();
+ audioAgent.Init(audioCategory);
+ audioAgent.Load(path, bAsync, bInPool);
+ return audioAgent;
}
- public void Init(AudioMixerGroup audioMixerGroup)
+ public void Init(AudioCategory audioCategory,int index = 0)
{
- GameObject host = new GameObject("Audio");
- host.transform.SetParent(AudioManager.Instance.transform);
+ _audioModule = GameEntry.GetModule();
+ GameObject host = new GameObject(Utility.Text.Format("Audio Agent Helper - {0} - {1}", audioCategory.AudioMixerGroup.name, index));
+ host.transform.SetParent(audioCategory.InstanceRoot);
host.transform.localPosition = Vector3.zero;
_transform = host.transform;
_source = host.AddComponent();
_source.playOnAwake = false;
- _source.outputAudioMixerGroup = audioMixerGroup;
+ AudioMixerGroup[] audioMixerGroups = audioCategory.AudioMixer.FindMatchingGroups(Utility.Text.Format("Master/{0}/{1}", audioCategory.AudioMixerGroup.name, index));
+ _source.outputAudioMixerGroup = audioMixerGroups.Length > 0 ? audioMixerGroups[0] : audioCategory.AudioMixerGroup;
_id = _source.GetInstanceID();
}
@@ -152,19 +162,23 @@ namespace TEngine
_duration = 0;
if (!string.IsNullOrEmpty(path))
{
- if (AudioManager.Instance._audioClipPool.ContainsKey(path))
+ if (_audioModule.AudioClipPool.ContainsKey(path))
{
- OnAssetLoadComplete(AudioManager.Instance._audioClipPool[path]);
+ OnAssetLoadComplete(_audioModule.AudioClipPool[path]);
return;
}
if (bAsync)
{
_state = State.Loading;
- AssetManager.Instance.GetAssetAsync(path, false, OnAssetLoadComplete);
+ AssetOperationHandle handle = _audioModule.ResourceManager.LoadAssetAsyncHandle(path);
+ handle.Completed += OnAssetLoadComplete;
}
else
- OnAssetLoadComplete(AssetManager.Instance.GetAsset(path, false));
+ {
+ AssetOperationHandle handle = _audioModule.ResourceManager.LoadAssetGetOperation(path);
+ OnAssetLoadComplete(handle);
+ }
}
}
else
@@ -195,40 +209,41 @@ namespace TEngine
}
}
- void OnAssetLoadComplete(AssetData assetData)
+ void OnAssetLoadComplete(AssetOperationHandle handle)
{
- if (assetData != null)
+ if (handle != null)
{
- assetData.OnAsyncLoadComplete -= OnAssetLoadComplete;
- if (_inPool && !AudioManager.Instance._audioClipPool.ContainsKey(assetData.Path))
+ handle.Completed -= OnAssetLoadComplete;
+ if (_inPool && !_audioModule.AudioClipPool.ContainsKey(handle.GetAssetInfo().AssetPath))
{
- assetData.AddRef();
- AudioManager.Instance._audioClipPool.Add(assetData.Path, assetData);
+ _audioModule.AudioClipPool.Add(handle.GetAssetInfo().AssetPath, handle);
}
}
if (_pendingLoad != null)
{
- assetData.AddRef();
- if (assetData != null)
- assetData.DecRef();
+ if (handle != null)
+ {
+ handle.Dispose();
+ }
+
_state = State.End;
string path = _pendingLoad.path;
bool bAsync = _pendingLoad.bAsync;
_pendingLoad = null;
Load(path, bAsync);
}
- else if (assetData != null)
+ else if (handle != null)
{
- assetData.AddRef();
- if (_assetData != null)
+ if (assetOperationHandle != null)
{
- _assetData.DecRef();
+ assetOperationHandle.Dispose();
}
- _assetData = assetData;
- _source.clip = _assetData.AssetObject as AudioClip;
+ assetOperationHandle = handle;
+
+ _source.clip = assetOperationHandle.AssetObject as AudioClip;
if (_source.clip != null)
{
_source.Play();
@@ -284,9 +299,9 @@ namespace TEngine
Object.Destroy(_transform.gameObject);
}
- if (_assetData != null)
+ if (assetOperationHandle != null)
{
- _assetData.DecRef();
+ assetOperationHandle.Dispose();
}
}
}
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/AudioData.cs.meta b/Assets/TEngine/Runtime/GameFramework/Audio/AudioAgent.cs.meta
similarity index 100%
rename from Assets/TEngine/Runtime/GameFramework/Audio/AudioData.cs.meta
rename to Assets/TEngine/Runtime/GameFramework/Audio/AudioAgent.cs.meta
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/AudioCategory.cs b/Assets/TEngine/Runtime/GameFramework/Audio/AudioCategory.cs
index cf26cb59..7376bb12 100644
--- a/Assets/TEngine/Runtime/GameFramework/Audio/AudioCategory.cs
+++ b/Assets/TEngine/Runtime/GameFramework/Audio/AudioCategory.cs
@@ -1,14 +1,26 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
using UnityEngine.Audio;
namespace TEngine
{
+ ///
+ /// 音频轨道(类别)。
+ ///
+ [Serializable]
public class AudioCategory
{
- public List _audioObjects;
- AudioMixerGroup _audioMixerGroup;
- int _maxChannel;
- bool _bEnable = true;
+ [SerializeField]
+ private AudioMixer _audioMixer = null;
+ public List AudioAgents;
+ private readonly AudioMixerGroup _audioMixerGroup;
+ private int _maxChannel;
+ private bool _bEnable = true;
+ public AudioMixer AudioMixer => _audioMixer;
+ public AudioMixerGroup AudioMixerGroup => _audioMixerGroup;
+
+ public Transform InstanceRoot { private set; get; }
public bool Enable
{
@@ -20,11 +32,11 @@ namespace TEngine
_bEnable = value;
if (!_bEnable)
{
- for (int i = 0; i < _audioObjects.Count; ++i)
+ foreach (var audioData in AudioAgents)
{
- if (_audioObjects[i] != null)
+ if (audioData != null)
{
- _audioObjects[i].Stop();
+ audioData.Stop();
}
}
}
@@ -33,18 +45,28 @@ namespace TEngine
}
- public AudioCategory(int maxChannel, AudioMixerGroup audioMixerGroup)
+ public AudioCategory(int maxChannel, AudioMixer audioMixer,AudioType audioType)
{
+ _audioMixer = audioMixer;
_maxChannel = maxChannel;
- _audioObjects = new List();
- for (int i = 0; i < _maxChannel; i++)
+ AudioMixerGroup[] audioMixerGroups = audioMixer.FindMatchingGroups(Utility.Text.Format("Master/{0}", audioType.ToString()));
+ if (audioMixerGroups.Length > 0)
{
- AudioData audioData = new AudioData();
- audioData.Init(audioMixerGroup);
- _audioObjects.Add(audioData);
+ _audioMixerGroup = audioMixerGroups[0];
+ }
+ else
+ {
+ _audioMixerGroup = audioMixer.FindMatchingGroups("Master")[0];
+ }
+ AudioAgents = new List(16);
+ InstanceRoot = new GameObject(Utility.Text.Format("Audio Category - {0}", _audioMixerGroup.name)).transform;
+ InstanceRoot.SetParent(GameEntry.GetModule().InstanceRoot);
+ for (int index = 0; index < _maxChannel; index++)
+ {
+ AudioAgent audioAgent = new AudioAgent();
+ audioAgent.Init(this, index);
+ AudioAgents.Add(audioAgent);
}
-
- _audioMixerGroup = audioMixerGroup;
}
public void AddAudio(int num)
@@ -52,12 +74,12 @@ namespace TEngine
_maxChannel += num;
for (int i = 0; i < num; i++)
{
- _audioObjects.Add(null);
+ AudioAgents.Add(null);
}
}
- public AudioData Play(string path, bool bAsync, bool bInPool = false)
+ public AudioAgent Play(string path, bool bAsync, bool bInPool = false)
{
if (!_bEnable)
{
@@ -66,39 +88,33 @@ namespace TEngine
int freeChannel = -1;
float duration = -1;
- int num = 0;
- for (int i = 0; i < _audioObjects.Count; ++i)
- {
- if (_audioObjects[i] != null && _audioObjects[i]._assetData != null && _audioObjects[i].IsFinish == false)
- {
- if (path.Equals(_audioObjects[i]._assetData.Path))
- {
- num++;
- }
- }
- }
- for (int i = 0; i < _audioObjects.Count; i++)
+ for (int i = 0; i < AudioAgents.Count; i++)
{
- if (_audioObjects[i]._assetData == null || _audioObjects[i].IsFinish == true)
+ if (AudioAgents[i].assetOperationHandle == null || AudioAgents[i].IsFinish)
{
freeChannel = i;
break;
}
- else if (_audioObjects[i].Duration > duration)
+ else if (AudioAgents[i].Duration > duration)
{
- duration = _audioObjects[i].Duration;
+ duration = AudioAgents[i].Duration;
freeChannel = i;
}
}
if (freeChannel >= 0)
{
- if (_audioObjects[freeChannel] == null)
- _audioObjects[freeChannel] = AudioData.Create(path, bAsync, _audioMixerGroup, bInPool);
+ if (AudioAgents[freeChannel] == null)
+ {
+ AudioAgents[freeChannel] = AudioAgent.Create(path, bAsync, this, bInPool);
+ }
else
- _audioObjects[freeChannel].Load(path, bAsync, bInPool);
- return _audioObjects[freeChannel];
+ {
+ AudioAgents[freeChannel].Load(path, bAsync, bInPool);
+ }
+
+ return AudioAgents[freeChannel];
}
else
{
@@ -109,22 +125,22 @@ namespace TEngine
public void Stop(bool fadeout)
{
- for (int i = 0; i < _audioObjects.Count; ++i)
+ for (int i = 0; i < AudioAgents.Count; ++i)
{
- if (_audioObjects[i] != null)
+ if (AudioAgents[i] != null)
{
- _audioObjects[i].Stop(fadeout);
+ AudioAgents[i].Stop(fadeout);
}
}
}
public void Update(float delta)
{
- for (int i = 0; i < _audioObjects.Count; ++i)
+ for (int i = 0; i < AudioAgents.Count; ++i)
{
- if (_audioObjects[i] != null)
+ if (AudioAgents[i] != null)
{
- _audioObjects[i].Update(delta);
+ AudioAgents[i].Update(delta);
}
}
}
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/AudioGroupConfig.cs b/Assets/TEngine/Runtime/GameFramework/Audio/AudioGroupConfig.cs
new file mode 100644
index 00000000..190f219a
--- /dev/null
+++ b/Assets/TEngine/Runtime/GameFramework/Audio/AudioGroupConfig.cs
@@ -0,0 +1,55 @@
+using System;
+using UnityEngine;
+
+namespace TEngine
+{
+ [Serializable]
+ public sealed class AudioGroupConfig
+ {
+ [SerializeField]
+ private string m_Name = null;
+
+ [SerializeField]
+ private bool m_Mute = false;
+
+ [SerializeField, Range(0f, 1f)]
+ private float m_Volume = 1f;
+
+ [SerializeField]
+ private int m_AgentHelperCount = 1;
+
+ public AudioType AudioType;
+
+ public string Name
+ {
+ get
+ {
+ return m_Name;
+ }
+ }
+
+ public bool Mute
+ {
+ get
+ {
+ return m_Mute;
+ }
+ }
+
+ public float Volume
+ {
+ get
+ {
+ return m_Volume;
+ }
+ }
+
+ public int AgentHelperCount
+ {
+ get
+ {
+ return m_AgentHelperCount;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/AudioGroupConfig.cs.meta b/Assets/TEngine/Runtime/GameFramework/Audio/AudioGroupConfig.cs.meta
new file mode 100644
index 00000000..9b85f14a
--- /dev/null
+++ b/Assets/TEngine/Runtime/GameFramework/Audio/AudioGroupConfig.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 684dc0dd6d5f459a82c4231592dac598
+timeCreated: 1680767795
\ No newline at end of file
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/AudioModule.cs b/Assets/TEngine/Runtime/GameFramework/Audio/AudioModule.cs
index d72b63bd..603e3275 100644
--- a/Assets/TEngine/Runtime/GameFramework/Audio/AudioModule.cs
+++ b/Assets/TEngine/Runtime/GameFramework/Audio/AudioModule.cs
@@ -1,70 +1,98 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Reflection;
using UnityEngine;
using UnityEngine.Audio;
-using UnityEngine.Networking;
using YooAsset;
namespace TEngine
{
- public class ChannelNumConfig
- {
- public int MaxChannelNum;
- }
-
///
/// 音效管理,为游戏提供统一的音效播放接口。
///
/// 场景3D音效挂到场景物件、技能3D音效挂到技能特效上,并在AudioSource的Output上设置对应分类的AudioMixerGroup
- public class AudioManager : GameFrameworkModuleBase
+ public class AudioModule : GameFrameworkModuleBase
{
- private AudioMixer _audioMixer;
+ [SerializeField] private AudioMixer m_AudioMixer;
+
+ [SerializeField] private Transform m_InstanceRoot = null;
+
+ [SerializeField]
+ private AudioGroupConfig[] m_AudioGroupConfigs = null;
+
private float _volume = 1f;
private bool _enable = true;
- public Dictionary _soundConfigDic = new Dictionary();
private int _audioChannelMaxNum = 0;
- AudioCategory[] _audioCategories = new AudioCategory[(int)AudioType.Max];
- float[] _categoriesVolume = new float[(int)AudioType.Max];
- public Dictionary _audioClipPool = new Dictionary();
-
- private bool _bUnityAudioDisabled = false;
+ private AudioCategory[] _audioCategories = new AudioCategory[(int)AudioType.Max];
+ private readonly float[] _categoriesVolume = new float[(int)AudioType.Max];
+ public readonly Dictionary AudioClipPool = new Dictionary();
+ public IResourceManager ResourceManager;
///
- /// 总音量控制
+ /// Unity是否禁用音频模块。
+ ///
+ private bool _bUnityAudioDisabled = false;
+
+ #region Public Propreties
+
+ ///
+ /// 音频混响器。
+ ///
+ public AudioMixer MAudioMixer => m_AudioMixer;
+
+ ///
+ /// 实例化根节点。
+ ///
+ public Transform InstanceRoot => m_InstanceRoot;
+
+ ///
+ /// 总音量控制。
///
public float Volume
{
get
{
if (_bUnityAudioDisabled)
+ {
return 0.0f;
+ }
+
return _volume;
}
set
{
if (_bUnityAudioDisabled)
+ {
return;
+ }
+
_volume = value;
AudioListener.volume = _volume;
}
}
///
- /// 总开关
+ /// 总开关。
///
public bool Enable
{
get
{
if (_bUnityAudioDisabled)
+ {
return false;
+ }
+
return _enable;
}
set
{
if (_bUnityAudioDisabled)
+ {
return;
+ }
+
_enable = value;
AudioListener.volume = _enable ? _volume : 0f;
}
@@ -78,17 +106,22 @@ namespace TEngine
get
{
if (_bUnityAudioDisabled)
+ {
return 0.0f;
+ }
+
return _categoriesVolume[(int)AudioType.Music];
}
set
{
if (_bUnityAudioDisabled)
+ {
return;
+ }
+
float volume = Mathf.Clamp(value, 0.0001f, 1.0f);
_categoriesVolume[(int)AudioType.Music] = volume;
-
- _audioMixer.SetFloat("MusicVolume", Mathf.Log10(volume) * 20f);
+ m_AudioMixer.SetFloat("MusicVolume", Mathf.Log10(volume) * 20f);
}
}
@@ -100,19 +133,52 @@ namespace TEngine
get
{
if (_bUnityAudioDisabled)
+ {
return 0.0f;
+ }
+
return _categoriesVolume[(int)AudioType.Sound];
}
set
{
if (_bUnityAudioDisabled)
+ {
return;
+ }
+
float volume = Mathf.Clamp(value, 0.0001f, 1.0f);
_categoriesVolume[(int)AudioType.Sound] = volume;
- _audioMixer.SetFloat("SoundVolume", Mathf.Log10(volume) * 20f);
+ m_AudioMixer.SetFloat("SoundVolume", Mathf.Log10(volume) * 20f);
}
}
+ ///
+ /// 音效音量
+ ///
+ public float UISoundVolume
+ {
+ get
+ {
+ if (_bUnityAudioDisabled)
+ {
+ return 0.0f;
+ }
+
+ return _categoriesVolume[(int)AudioType.UISound];
+ }
+ set
+ {
+ if (_bUnityAudioDisabled)
+ {
+ return;
+ }
+
+ float volume = Mathf.Clamp(value, 0.0001f, 1.0f);
+ _categoriesVolume[(int)AudioType.UISound] = volume;
+ m_AudioMixer.SetFloat("UISoundVolume", Mathf.Log10(volume) * 20f);
+ }
+ }
+
///
/// 语音音量
///
@@ -121,16 +187,22 @@ namespace TEngine
get
{
if (_bUnityAudioDisabled)
+ {
return 0.0f;
+ }
+
return _categoriesVolume[(int)AudioType.Voice];
}
set
{
if (_bUnityAudioDisabled)
+ {
return;
+ }
+
float volume = Mathf.Clamp(value, 0.0001f, 1.0f);
_categoriesVolume[(int)AudioType.Voice] = volume;
- _audioMixer.SetFloat("VoiceVolume", Mathf.Log10(volume) * 20f);
+ m_AudioMixer.SetFloat("VoiceVolume", Mathf.Log10(volume) * 20f);
}
}
@@ -142,43 +214,87 @@ namespace TEngine
get
{
if (_bUnityAudioDisabled)
+ {
return false;
- float db;
- if (_audioMixer.GetFloat("MusicVolume", out db))
+ }
+
+ if (m_AudioMixer.GetFloat("MusicVolume", out var db))
+ {
return db > -80f;
+ }
else
+ {
return false;
+ }
}
set
{
if (_bUnityAudioDisabled)
+ {
return;
+ }
+
// 音乐采用0音量方式,避免恢复播放时的复杂逻辑
if (value)
- _audioMixer.SetFloat("MusicVolume", Mathf.Log10(_categoriesVolume[(int)AudioType.Music]) * 20f);
+ {
+ m_AudioMixer.SetFloat("MusicVolume", Mathf.Log10(_categoriesVolume[(int)AudioType.Music]) * 20f);
+ }
else
- _audioMixer.SetFloat("MusicVolume", -80f);
+ {
+ m_AudioMixer.SetFloat("MusicVolume", -80f);
+ }
}
}
///
- /// 音效开关
+ /// 音效开关。
///
public bool SoundEnable
{
get
{
if (_bUnityAudioDisabled)
+ {
return false;
+ }
+
return _audioCategories[(int)AudioType.Sound].Enable;
}
set
{
if (_bUnityAudioDisabled)
+ {
return;
+ }
+
_audioCategories[(int)AudioType.Sound].Enable = value;
}
}
+
+ ///
+ /// 音效开关。
+ ///
+ public bool UISoundEnable
+ {
+ get
+ {
+ if (_bUnityAudioDisabled)
+ {
+ return false;
+ }
+
+ return _audioCategories[(int)AudioType.UISound].Enable;
+ }
+ set
+ {
+ if (_bUnityAudioDisabled)
+ {
+ return;
+ }
+
+ _audioCategories[(int)AudioType.UISound].Enable = value;
+ }
+ }
///
/// 语音开关
@@ -188,29 +304,52 @@ namespace TEngine
get
{
if (_bUnityAudioDisabled)
+ {
return false;
+ }
+
return _audioCategories[(int)AudioType.Voice].Enable;
}
set
{
if (_bUnityAudioDisabled)
+ {
return;
+ }
+
_audioCategories[(int)AudioType.Voice].Enable = value;
}
}
- internal AudioMixer audioMixer
- {
- get { return _audioMixer; }
- }
+ #endregion
+
void Start()
{
Initialize();
}
+ ///
+ /// 初始化音频模块。
+ ///
private void Initialize()
{
+ RootModule rootModule = GameEntry.GetModule();
+ if (rootModule == null)
+ {
+ Log.Fatal("Base component is invalid.");
+ return;
+ }
+
+ ResourceManager = GameFrameworkEntry.GetModule();
+
+ if (m_InstanceRoot == null)
+ {
+ m_InstanceRoot = new GameObject("AudioModule Instances").transform;
+ m_InstanceRoot.SetParent(gameObject.transform);
+ m_InstanceRoot.localScale = Vector3.one;
+ }
+
try
{
TypeInfo typeInfo = typeof(AudioSettings).GetTypeInfo();
@@ -226,41 +365,42 @@ namespace TEngine
Log.Error(e.ToString());
}
- _audioMixer = Resources.Load("AudioMixer");
-
- for (int i = 0; i < (int)AudioType.Max; ++i)
+ if (m_AudioMixer == null)
{
- int channelMaxNum = 0;
- if (i == (int)AudioType.Sound)
- {
- channelMaxNum = 10;
- }
- else
- {
- channelMaxNum = 1;
- }
- _audioCategories[i] = new AudioCategory(channelMaxNum, audioMixer.FindMatchingGroups(((AudioType)i).ToString())[0]);
- _categoriesVolume[i] = 1.0f;
+ m_AudioMixer = Resources.Load("AudioMixer");
+ }
+
+ for (int index = 0; index < (int)AudioType.Max; ++index)
+ {
+ AudioType audioType = (AudioType)index;
+ AudioGroupConfig audioGroupConfig = m_AudioGroupConfigs.First(t => t.AudioType == audioType);
+ _audioCategories[index] = new AudioCategory(audioGroupConfig.AgentHelperCount, m_AudioMixer, audioType);
+ _categoriesVolume[index] = audioGroupConfig.Volume;
}
}
+ ///
+ /// 重启音频模块。
+ ///
public void Restart()
{
if (_bUnityAudioDisabled)
{
return;
}
+
CleanSoundPool();
+
for (int i = 0; i < (int)AudioType.Max; ++i)
{
if (_audioCategories[i] != null)
{
- for (int j = 0; j < _audioCategories[i]._audioObjects.Count; ++j)
+ for (int j = 0; j < _audioCategories[i].AudioAgents.Count; ++j)
{
- if (_audioCategories[i]._audioObjects[j] != null)
+ if (_audioCategories[i].AudioAgents[j] != null)
{
- _audioCategories[i]._audioObjects[j].Destroy();
- _audioCategories[i]._audioObjects[j] = null;
+ _audioCategories[i].AudioAgents[j].Destroy();
+ _audioCategories[i].AudioAgents[j] = null;
}
}
}
@@ -272,33 +412,35 @@ namespace TEngine
}
///
- /// 播放,如果超过最大发声数采用fadeout的方式复用最久播放的AudioSource
+ /// 播放,如果超过最大发声数采用fadeout的方式复用最久播放的AudioSource。
///
/// 声音类型
- /// 声音文件路径,通过右键菜单Get Asset Path获取的路径
+ /// 声音文件路径
/// 是否循环播放>
/// 音量(0-1.0)
/// 是否异步加载
- public AudioData Play(AudioType type, string path, bool bLoop = false, float volume = 1.0f, bool bAsync = false, bool bInPool = false)
+ /// 是否支持资源池
+ public AudioAgent Play(AudioType type, string path, bool bLoop = false, float volume = 1.0f, bool bAsync = false, bool bInPool = false)
{
if (_bUnityAudioDisabled)
{
return null;
}
- AudioData audioData = _audioCategories[(int)type].Play(path, bAsync, bInPool);
+
+ AudioAgent audioAgent = _audioCategories[(int)type].Play(path, bAsync, bInPool);
{
- if (audioData != null)
+ if (audioAgent != null)
{
- audioData.IsLoop = bLoop;
- audioData.Volume = volume;
+ audioAgent.IsLoop = bLoop;
+ audioAgent.Volume = volume;
}
- return audioData;
+ return audioAgent;
}
}
///
- /// 停止某类声音播放
+ /// 停止某类声音播放。
///
/// 声音类型
/// 是否渐消
@@ -308,11 +450,12 @@ namespace TEngine
{
return;
}
+
_audioCategories[(int)type].Stop(fadeout);
}
///
- /// 停止所有声音
+ /// 停止所有声音。
///
/// 是否渐消
public void StopAll(bool fadeout)
@@ -321,6 +464,7 @@ namespace TEngine
{
return;
}
+
for (int i = 0; i < (int)AudioType.Max; ++i)
{
if (_audioCategories[i] != null)
@@ -341,6 +485,7 @@ namespace TEngine
{
return;
}
+
if (num >= _audioChannelMaxNum)
{
_audioCategories[(int)AudioType.Sound].AddAudio(num - _audioChannelMaxNum);
@@ -351,34 +496,35 @@ namespace TEngine
Stop(AudioType.Sound, true);
_audioChannelMaxNum = num;
_audioCategories[(int)AudioType.Sound].Enable = false;
- _audioCategories[(int)AudioType.Sound] = new AudioCategory(_audioChannelMaxNum, _audioMixer.FindMatchingGroups((AudioType.Sound).ToString())[0]);
+ _audioCategories[(int)AudioType.Sound] = new AudioCategory(_audioChannelMaxNum, m_AudioMixer, AudioType.Sound);
_categoriesVolume[(int)AudioType.Sound] = 1.0f;
}
}
///
- /// 预先加载AudioClip,并放入对象池
+ /// 预先加载AudioClip,并放入对象池。
///
- /// AudioClip的AssetPath集合
+ /// AudioClip的AssetPath集合。
public void PutInAudioPool(List list)
{
if (_bUnityAudioDisabled)
{
return;
}
+
foreach (string path in list)
{
- if (_audioClipPool != null && !_audioClipPool.ContainsKey(path))
+ if (AudioClipPool != null && !AudioClipPool.ContainsKey(path))
{
- AssetOperationHandle assetData = AssetManager.Instance.GetAsset(path, false);
- _audioClipPool?.Add(assetData.Path, assetData);
+ AssetOperationHandle assetData = ResourceManager.LoadAssetGetOperation(path);
+ AudioClipPool?.Add(path, assetData);
}
}
}
///
- /// 将部分AudioClip从对象池移出
+ /// 将部分AudioClip从对象池移出。
///
/// AudioClip的AssetPath集合
public void RemoveClipFromPool(List list)
@@ -387,18 +533,19 @@ namespace TEngine
{
return;
}
+
foreach (string path in list)
{
- if (_audioClipPool.ContainsKey(path))
+ if (AudioClipPool.ContainsKey(path))
{
- _audioClipPool[path].Dispose();
- _audioClipPool.Remove(path);
+ AudioClipPool[path].Dispose();
+ AudioClipPool.Remove(path);
}
}
}
///
- /// 清空AudioClip的对象池
+ /// 清空AudioClip的对象池。
///
public void CleanSoundPool()
{
@@ -406,12 +553,13 @@ namespace TEngine
{
return;
}
- foreach (var dic in _audioClipPool)
+
+ foreach (var dic in AudioClipPool)
{
dic.Value.Dispose();
}
- _audioClipPool.Clear();
+ AudioClipPool.Clear();
}
private void Update()
@@ -420,7 +568,7 @@ namespace TEngine
{
if (_audioCategories[i] != null)
{
- _audioCategories[i].Update(Time.deltaTime);
+ _audioCategories[i].Update(GameTime.deltaTime);
}
}
}
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/AudioType.cs b/Assets/TEngine/Runtime/GameFramework/Audio/AudioType.cs
index 004a001f..2e6d809c 100644
--- a/Assets/TEngine/Runtime/GameFramework/Audio/AudioType.cs
+++ b/Assets/TEngine/Runtime/GameFramework/Audio/AudioType.cs
@@ -11,6 +11,10 @@
///
Sound,
///
+ /// UI声效
+ ///
+ UISound,
+ ///
/// 背景音乐
///
Music,
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/Constant.cs b/Assets/TEngine/Runtime/GameFramework/Audio/Constant.cs
deleted file mode 100644
index 613554d7..00000000
--- a/Assets/TEngine/Runtime/GameFramework/Audio/Constant.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace TEngine
-{
- ///
- /// 声音相关常量。
- ///
- internal static class SoundConstant
- {
- internal const float DefaultTime = 0f;
- internal const bool DefaultMute = false;
- internal const bool DefaultLoop = false;
- internal const int DefaultPriority = 0;
- internal const float DefaultVolume = 1f;
- internal const float DefaultFadeInSeconds = 0f;
- internal const float DefaultFadeOutSeconds = 0f;
- internal const float DefaultPitch = 1f;
- internal const float DefaultPanStereo = 0f;
- internal const float DefaultSpatialBlend = 0f;
- internal const float DefaultMaxDistance = 100f;
- internal const float DefaultDopplerLevel = 1f;
- }
-}
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/Constant.cs.meta b/Assets/TEngine/Runtime/GameFramework/Audio/Constant.cs.meta
deleted file mode 100644
index 0d487cc5..00000000
--- a/Assets/TEngine/Runtime/GameFramework/Audio/Constant.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 165d290aafde4df4945ca30625396874
-timeCreated: 1680687464
\ No newline at end of file
diff --git a/Assets/TEngine/Runtime/GameFramework/Audio/Resources/AudioMixer.mixer b/Assets/TEngine/Runtime/GameFramework/Audio/Resources/AudioMixer.mixer
index 64fbfe73..13455161 100644
--- a/Assets/TEngine/Runtime/GameFramework/Audio/Resources/AudioMixer.mixer
+++ b/Assets/TEngine/Runtime/GameFramework/Audio/Resources/AudioMixer.mixer
@@ -1,5 +1,19 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
+--- !u!244 &-8255999005317483048
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 5256fbc85eb3f884eb780f730c8da825
+ m_EffectName: Attenuation
+ m_MixLevel: 989fcb1cc28d4de4ea6e56c14101e674
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
--- !u!244 &-8165904320333843496
AudioMixerEffectController:
m_ObjectHideFlags: 3
@@ -14,6 +28,91 @@ AudioMixerEffectController:
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
+--- !u!244 &-7861682458482441818
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: dcc48474d251d554e9f6f95668853a39
+ m_EffectName: Receive
+ m_MixLevel: e6248274fab455749bc046d72eace6de
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!243 &-7758028812591520460
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 2
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 039cd795affa7134a8d5f5d43d3b659d
+ m_Children: []
+ m_Volume: 2a8ce0f3383c3f0468a04fa3fc5e317d
+ m_Pitch: b47f0c73299cd9b4fba9896e70683903
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: -3825599753161013374}
+ m_UserColorIndex: 2
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!243 &-6280614258348125054
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 1
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: c0d40106c2ffb1a44bd48f50b210ee20
+ m_Children: []
+ m_Volume: f62a8b3fe89df00409532af739ee4e02
+ m_Pitch: 77212647508232a458ac7d48fb55d037
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: -1890011256548497850}
+ m_UserColorIndex: 2
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!244 &-4958177229083455073
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 104113b95764fe344a5d25469377c800
+ m_EffectName: Attenuation
+ m_MixLevel: 9ef29befaad178d4386e9d5ac022f964
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!243 &-4372808504093502661
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 3
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 5f20d1b8f9ac1914dac8beae718e7d40
+ m_Children: []
+ m_Volume: e54edf7c1bf7ee44297e65adce5b10b7
+ m_Pitch: 8542b6bfd7b7bfc4d9b961ba97edf0d2
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: 6637688299338053042}
+ m_UserColorIndex: 2
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
--- !u!243 &-4209890294574411305
AudioMixerGroupController:
m_ObjectHideFlags: 0
@@ -23,13 +122,47 @@ AudioMixerGroupController:
m_Name: Music
m_AudioMixer: {fileID: 24100000}
m_GroupID: efe8591c00084024187b9df78858c0af
- m_Children: []
+ m_Children:
+ - {fileID: 1543978434442340687}
m_Volume: 6d4c2b8bc0ef38d44b2fbff2b3298ab4
m_Pitch: 862389c428a73854ab442dd043008729
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 246003612463095956}
- m_UserColorIndex: 0
+ m_UserColorIndex: 1
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!244 &-3825599753161013374
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: d1bbcc7cbe0a53c459c9064925118e41
+ m_EffectName: Attenuation
+ m_MixLevel: e43bb5de098a2ec49807913fa5fdd2f7
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!243 &-3720557753501792270
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 1
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: e012b6d2e0501df43a88eb6beff8ae07
+ m_Children: []
+ m_Volume: 265eaf7c8910ab842a845c7bb5e570c4
+ m_Pitch: bf3ca9b57c9a67b40944a59839b12f62
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: 5734415080786067514}
+ m_UserColorIndex: 3
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
@@ -42,16 +175,127 @@ AudioMixerGroupController:
m_Name: Voice
m_AudioMixer: {fileID: 24100000}
m_GroupID: 5117f9b5a365ec049a9d5891c563b893
- m_Children: []
+ m_Children:
+ - {fileID: -1649243360580130678}
m_Volume: fe15a1b40c14ea646a13dacb15b6a73b
m_Pitch: 3398197a464677a4186e0cecd66bb13c
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: -8165904320333843496}
- m_UserColorIndex: 0
+ m_UserColorIndex: 6
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
+--- !u!243 &-2659745067392564156
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 0
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 71c50c6b966d1f548a63193919ebfbad
+ m_Children: []
+ m_Volume: 7835f2c4248cb3e43a1a773bab1f8b9d
+ m_Pitch: 30975daa872456b41bc18e0277e301e6
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: -284252157345190109}
+ m_UserColorIndex: 2
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!244 &-1890011256548497850
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 520975c71ea21c249b3cdf1f22032e57
+ m_EffectName: Attenuation
+ m_MixLevel: 932e3e893621c5b46bff3c368017e689
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!243 &-1649243360580130678
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 0
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: f46651e8ad3c6034b8764fd635dda3fd
+ m_Children: []
+ m_Volume: 0bc64c1c6cebbeb40ba2f724fdcaa257
+ m_Pitch: fff252bdd985513469f8607e016fc594
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: -890847686165078200}
+ m_UserColorIndex: 6
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!244 &-998299258853400712
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: d7d19927abbe5584080506164cb4e644
+ m_EffectName: Attenuation
+ m_MixLevel: 0b4264524e3eafc49b2daba7fba2ce97
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!244 &-890847686165078200
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 4b41d8aa7a7944041a8b9428add83eff
+ m_EffectName: Attenuation
+ m_MixLevel: 73b7a9825978be245a1962a1001b0212
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!244 &-284252157345190109
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 15668b74147caee41a72f695c3a2de56
+ m_EffectName: Attenuation
+ m_MixLevel: f71e84fb9a62ff24cad690a0a86cc47e
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!244 &-21257493329335984
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: c9a6f7a9214534644bf2e6d83ff86569
+ m_EffectName: Distortion
+ m_MixLevel: 3f356cddae5dba949a6e8f4d20564d3e
+ m_Parameters:
+ - m_ParameterName: Level
+ m_GUID: 080be1914d960974481df4bebe2a2d77
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
--- !u!241 &24100000
AudioMixerController:
m_ObjectHideFlags: 0
@@ -68,12 +312,34 @@ AudioMixerController:
m_EnableSuspend: 1
m_UpdateMode: 0
m_ExposedParameters:
+ - guid: 7835f2c4248cb3e43a1a773bab1f8b9d
+ name: UISoundVolume
+ - guid: 41591fd4a32f4034f880ecbc14ee69f1
+ name: MusicVolume
+ - guid: 6e0d1a5935a802d41b27d9e2fad3ba2f
+ name: UISoundVolume
+ - guid: 0bc64c1c6cebbeb40ba2f724fdcaa257
+ name: VoiceVolume
+ - guid: f62a8b3fe89df00409532af739ee4e02
+ name: SoundVolume
+ - guid: 265eaf7c8910ab842a845c7bb5e570c4
+ name: UISoundVolume
+ - guid: 2a8ce0f3383c3f0468a04fa3fc5e317d
+ name: SoundVolume
+ - guid: e83be6d6c4ae85142a51f584159c4ff6
+ name: UISoundVolume
+ - guid: e54edf7c1bf7ee44297e65adce5b10b7
+ name: SoundVolume
+ - guid: 2dd26f9dadf160f4bbd77f307c3f4f2e
+ name: UISoundVolume
- guid: ba83e724007d7e9459f157db3a54a741
name: MasterVolume
- guid: 6d4c2b8bc0ef38d44b2fbff2b3298ab4
name: MusicVolume
- guid: 3bbd22597ed32714eb271cf06b098c63
name: SoundVolume
+ - guid: 7d1c7ed015f5dba4f934c33ef330c5eb
+ name: UISoundVolume
- guid: fe15a1b40c14ea646a13dacb15b6a73b
name: VoiceVolume
m_AudioMixerGroupViews:
@@ -82,6 +348,17 @@ AudioMixerController:
- efe8591c00084024187b9df78858c0af
- 648e49a020cf83346a9220d606e4ff39
- 5117f9b5a365ec049a9d5891c563b893
+ - f46651e8ad3c6034b8764fd635dda3fd
+ - 1cf576bd46399874d9494863d6502d94
+ - 71c50c6b966d1f548a63193919ebfbad
+ - df986418fa3e4ae448a1909ffbb633fb
+ - 29257697b1e6be546aa0558e342a15a6
+ - c0d40106c2ffb1a44bd48f50b210ee20
+ - 039cd795affa7134a8d5f5d43d3b659d
+ - 5f20d1b8f9ac1914dac8beae718e7d40
+ - e012b6d2e0501df43a88eb6beff8ae07
+ - e84c25a476798ea43a2f6de217af7dba
+ - 98657376d4096a947953ee04d82830c1
name: View
m_CurrentViewIndex: 0
m_TargetSnapshot: {fileID: 24500006}
@@ -97,13 +374,14 @@ AudioMixerGroupController:
m_Children:
- {fileID: -4209890294574411305}
- {fileID: 7235523536312936115}
+ - {fileID: 7185772616558441635}
- {fileID: -3395020342500439107}
m_Volume: ba83e724007d7e9459f157db3a54a741
m_Pitch: a2d2b77391464bb4887f0bcd3835015b
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 24400004}
- m_UserColorIndex: 0
+ m_UserColorIndex: 8
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
@@ -134,7 +412,7 @@ AudioMixerSnapshotController:
ba83e724007d7e9459f157db3a54a741: 0
fe15a1b40c14ea646a13dacb15b6a73b: 0
3bbd22597ed32714eb271cf06b098c63: 0
- 6d4c2b8bc0ef38d44b2fbff2b3298ab4: 0
+ 6d4c2b8bc0ef38d44b2fbff2b3298ab4: -0.03
m_TransitionOverrides: {}
--- !u!244 &246003612463095956
AudioMixerEffectController:
@@ -150,6 +428,74 @@ AudioMixerEffectController:
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
+--- !u!244 &281287199725387719
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 812fbfe4555eb1641aeaeee69a13b4a6
+ m_EffectName: Lowpass Simple
+ m_MixLevel: 391139084347578409e42387008bd110
+ m_Parameters:
+ - m_ParameterName: Cutoff freq
+ m_GUID: b19756871f24b194d87c7d1fce3159e9
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!244 &1413273517213151576
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: ce0c93d89826c7349a19b232116484db
+ m_EffectName: Attenuation
+ m_MixLevel: 7625365898787684c9bce9298a96f044
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!243 &1543978434442340687
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 0
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 1cf576bd46399874d9494863d6502d94
+ m_Children: []
+ m_Volume: 41591fd4a32f4034f880ecbc14ee69f1
+ m_Pitch: 9ad7e859a0cd1f142b59ffc659be28a7
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: -8255999005317483048}
+ m_UserColorIndex: 1
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!243 &1601410790413250045
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 3
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 98657376d4096a947953ee04d82830c1
+ m_Children: []
+ m_Volume: 2dd26f9dadf160f4bbd77f307c3f4f2e
+ m_Pitch: 5627fa8b0176a344bbb4e59ac5e648d3
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: 1413273517213151576}
+ m_UserColorIndex: 3
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
--- !u!244 &2567082640316932351
AudioMixerEffectController:
m_ObjectHideFlags: 3
@@ -164,6 +510,161 @@ AudioMixerEffectController:
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
+--- !u!243 &3865010338301366421
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 2
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: e84c25a476798ea43a2f6de217af7dba
+ m_Children: []
+ m_Volume: e83be6d6c4ae85142a51f584159c4ff6
+ m_Pitch: c45439925e1cfd547894fd886160a11c
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: 7834155774142160187}
+ m_UserColorIndex: 3
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!244 &5734415080786067514
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 20eac414948135e49b2b54a89235f15e
+ m_EffectName: Attenuation
+ m_MixLevel: d087be8c429707c4db724a61186f67f6
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!244 &5954042604037024145
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: ba434c984ec3c4442bfe3a399c11572b
+ m_EffectName: Echo
+ m_MixLevel: 0323002ce01f29a4abebc242337ea816
+ m_Parameters:
+ - m_ParameterName: Delay
+ m_GUID: f4cc548867353f843bc36a61722c6cbf
+ - m_ParameterName: Decay
+ m_GUID: e67c7b4426842f948a83f3dada794a99
+ - m_ParameterName: Max channels
+ m_GUID: 75c7951a8373f4644a44979a8c5776ed
+ - m_ParameterName: Drymix
+ m_GUID: 4d26b3b7a84b31d499176a7879734ba1
+ - m_ParameterName: Wetmix
+ m_GUID: 6efaeec45de20b045a4d560994684cba
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!244 &6255340296135181231
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 3a251f2e65751b349bb255f73f0caeaf
+ m_EffectName: Duck Volume
+ m_MixLevel: 58cfdd03ab24c874cbe074238d636208
+ m_Parameters:
+ - m_ParameterName: Threshold
+ m_GUID: b1b5c57689fc533408e6195c0a9e26a9
+ - m_ParameterName: Ratio
+ m_GUID: dc9c2c635bce58746bd68c7dffb99ca0
+ - m_ParameterName: Attack Time
+ m_GUID: 078ff252301e4594c880cd5754b8a563
+ - m_ParameterName: Release Time
+ m_GUID: b3918efd0a966ea4882714c0f9edd40b
+ - m_ParameterName: Make-up Gain
+ m_GUID: 3cf881ca64b7cdb46b35d3593ff2cbe9
+ - m_ParameterName: Knee
+ m_GUID: 31ea47a78d927ab4abf12f854bd4c626
+ - m_ParameterName: Sidechain Mix
+ m_GUID: 468d86503d3572541a33c33bb9693dfd
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!244 &6554641470784401750
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 4499c94d696ee5741a71370ed7431e12
+ m_EffectName: Send
+ m_MixLevel: f01b57f2509f26f4b8f2772993c2b8c6
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!244 &6637688299338053042
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: e84926aaeedf4074698e7d7f7f36b78b
+ m_EffectName: Attenuation
+ m_MixLevel: 8141a348079ee934686d3569f4758582
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0
+--- !u!243 &7040861873718444651
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: 0
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: 29257697b1e6be546aa0558e342a15a6
+ m_Children: []
+ m_Volume: 6e0d1a5935a802d41b27d9e2fad3ba2f
+ m_Pitch: 7d01f3677fe8c5b41a877b64cc509766
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: -4958177229083455073}
+ m_UserColorIndex: 3
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
+--- !u!243 &7185772616558441635
+AudioMixerGroupController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: UISound
+ m_AudioMixer: {fileID: 24100000}
+ m_GroupID: df986418fa3e4ae448a1909ffbb633fb
+ m_Children:
+ - {fileID: 7040861873718444651}
+ - {fileID: -3720557753501792270}
+ - {fileID: 3865010338301366421}
+ - {fileID: 1601410790413250045}
+ m_Volume: 7d1c7ed015f5dba4f934c33ef330c5eb
+ m_Pitch: 611d9d89c8a65b548b591e852596c35d
+ m_Send: 00000000000000000000000000000000
+ m_Effects:
+ - {fileID: -998299258853400712}
+ m_UserColorIndex: 3
+ m_Mute: 0
+ m_Solo: 0
+ m_BypassEffects: 0
--- !u!243 &7235523536312936115
AudioMixerGroupController:
m_ObjectHideFlags: 0
@@ -173,13 +674,31 @@ AudioMixerGroupController:
m_Name: Sound
m_AudioMixer: {fileID: 24100000}
m_GroupID: 648e49a020cf83346a9220d606e4ff39
- m_Children: []
+ m_Children:
+ - {fileID: -2659745067392564156}
+ - {fileID: -6280614258348125054}
+ - {fileID: -7758028812591520460}
+ - {fileID: -4372808504093502661}
m_Volume: 3bbd22597ed32714eb271cf06b098c63
m_Pitch: 7f8a6510dd472ff4db8b07c5079a2013
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 2567082640316932351}
- m_UserColorIndex: 0
+ m_UserColorIndex: 2
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
+--- !u!244 &7834155774142160187
+AudioMixerEffectController:
+ m_ObjectHideFlags: 3
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_EffectID: 09e809d6183106b4a804ff08ca8ff9ed
+ m_EffectName: Attenuation
+ m_MixLevel: 92339d91519b09543844a84cea03aed3
+ m_Parameters: []
+ m_SendTarget: {fileID: 0}
+ m_EnableWetMix: 0
+ m_Bypass: 0