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