From 86bee7557893d9b2beb4774602cb66200d5ab6aa Mon Sep 17 00:00:00 2001 From: AlexanderT Date: Tue, 28 Oct 2025 13:19:33 +0100 Subject: [PATCH] Implemented pauses on AudioManager --- Assets/AppleHillsAudioMix.mixer | 107 +++++++++++++++++- ...oundManager.prefab => AudioManager.prefab} | 4 +- ...r.prefab.meta => AudioManager.prefab.meta} | 0 Assets/Scripts/Sound/AudioManager.cs | 76 ++++++++++++- Assets/Sound/Quarry/QuarryAudio.prefab | 2 +- 5 files changed, 181 insertions(+), 8 deletions(-) rename Assets/Prefabs/Managers/{SoundManager.prefab => AudioManager.prefab} (90%) rename Assets/Prefabs/Managers/{SoundManager.prefab.meta => AudioManager.prefab.meta} (100%) diff --git a/Assets/AppleHillsAudioMix.mixer b/Assets/AppleHillsAudioMix.mixer index 7c3379b2..d566db8e 100644 --- a/Assets/AppleHillsAudioMix.mixer +++ b/Assets/AppleHillsAudioMix.mixer @@ -1,5 +1,38 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!243 &-6354048548703642832 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FlavorVO + m_AudioMixer: {fileID: 24100000} + m_GroupID: d96f2f2d9081a2b4680e4cc99ae6dde2 + m_Children: [] + m_Volume: 8b556d01082609a41b5e0ac71387eb2b + m_Pitch: 543e5193b3b867a4a9e179b532d94963 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 2755879577735596061} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &-2388863367724940654 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 70589a6f94c3a7e4f985d76dc20fec7d + m_EffectName: Attenuation + m_MixLevel: 1017da8a9e9644f46a2582f97a979436 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 --- !u!243 &-1208528772216134639 AudioMixerGroupController: m_ObjectHideFlags: 0 @@ -19,6 +52,25 @@ AudioMixerGroupController: m_Mute: 0 m_Solo: 0 m_BypassEffects: 0 +--- !u!243 &-281949353495416486 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: CriticalVO + m_AudioMixer: {fileID: 24100000} + m_GroupID: 0564b669f5b88d74fbf644daddff7659 + m_Children: [] + m_Volume: b5a4611797e711d4384da7546db03ad4 + m_Pitch: 6b6c6926b5cf7d64e8546ad727cd1b56 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 4434749241126400044} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 --- !u!241 &24100000 AudioMixerController: m_ObjectHideFlags: 0 @@ -41,6 +93,9 @@ AudioMixerController: - 18a903247b220fb47b8e743f756a2d19 - 7e41227c6d9a65c4898080710c015deb - 93449300145f3ff4c9f21b59e4c06cb8 + - 0564b669f5b88d74fbf644daddff7659 + - d96f2f2d9081a2b4680e4cc99ae6dde2 + - 69e7e2391e0225240b94aab8ac4968dd name: View m_CurrentViewIndex: 0 m_TargetSnapshot: {fileID: 24500006} @@ -56,6 +111,7 @@ AudioMixerGroupController: m_Children: - {fileID: -1208528772216134639} - {fileID: 1171626333864818265} + - {fileID: 5060278701334990569} - {fileID: 3533147658878909314} m_Volume: 59834639f5649d34cbb5ed8055029b93 m_Pitch: 2c79200ddd7bbf244bc5980d7fbb6e1c @@ -124,6 +180,20 @@ AudioMixerGroupController: m_Mute: 0 m_Solo: 0 m_BypassEffects: 0 +--- !u!244 &2755879577735596061 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Attenuation + m_EffectID: 938281aaf51dfdb448130f1d299a9c32 + m_EffectName: Attenuation + m_MixLevel: ba6923d75c4220e4bab55e5aa6eab3ea + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 --- !u!243 &3533147658878909314 AudioMixerGroupController: m_ObjectHideFlags: 0 @@ -133,7 +203,9 @@ AudioMixerGroupController: m_Name: Voice Over m_AudioMixer: {fileID: 24100000} m_GroupID: 7e41227c6d9a65c4898080710c015deb - m_Children: [] + m_Children: + - {fileID: -281949353495416486} + - {fileID: -6354048548703642832} m_Volume: f2db72fd62c62d74cb03d11a28b9ec8f m_Pitch: f711bad694828024996b7a703eb57af7 m_Send: 00000000000000000000000000000000 @@ -143,6 +215,39 @@ AudioMixerGroupController: m_Mute: 0 m_Solo: 0 m_BypassEffects: 0 +--- !u!244 &4434749241126400044 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 28433275b262aa6499b0cf5076b597de + m_EffectName: Attenuation + m_MixLevel: 5925348bdea90b04a895b3cd54c45b27 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!243 &5060278701334990569 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Music + m_AudioMixer: {fileID: 24100000} + m_GroupID: 69e7e2391e0225240b94aab8ac4968dd + m_Children: [] + m_Volume: c518de39492791c49b618d0aeac5a88d + m_Pitch: 264704130d9d22745aa9fa1150ff4490 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: -2388863367724940654} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 --- !u!244 &6612228481115079330 AudioMixerEffectController: m_ObjectHideFlags: 3 diff --git a/Assets/Prefabs/Managers/SoundManager.prefab b/Assets/Prefabs/Managers/AudioManager.prefab similarity index 90% rename from Assets/Prefabs/Managers/SoundManager.prefab rename to Assets/Prefabs/Managers/AudioManager.prefab index ed81dfce..f319cb61 100644 --- a/Assets/Prefabs/Managers/SoundManager.prefab +++ b/Assets/Prefabs/Managers/AudioManager.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 536416456044738252} - component: {fileID: 6629069534496617365} m_Layer: 0 - m_Name: SoundManager + m_Name: AudioManager m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -44,3 +44,5 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d8bd90cfc02c8274fac5ce090285ed6a, type: 3} m_Name: m_EditorClassIdentifier: '::' + currentPauseBehavior: 2 + _audioMixer: {fileID: 24100000, guid: 727a7e4b6df4b0d47897f7d8ee7fa323, type: 2} diff --git a/Assets/Prefabs/Managers/SoundManager.prefab.meta b/Assets/Prefabs/Managers/AudioManager.prefab.meta similarity index 100% rename from Assets/Prefabs/Managers/SoundManager.prefab.meta rename to Assets/Prefabs/Managers/AudioManager.prefab.meta diff --git a/Assets/Scripts/Sound/AudioManager.cs b/Assets/Scripts/Sound/AudioManager.cs index 35ccfec4..fca7f1f5 100644 --- a/Assets/Scripts/Sound/AudioManager.cs +++ b/Assets/Scripts/Sound/AudioManager.cs @@ -1,16 +1,82 @@ +using AppleHills.Core.Settings; +using Bootstrap; +using Core; +using PuzzleS; using UnityEngine; +using UnityEngine.Audio; +using Bootstrap; +using AppleHills.Core; +using AppleHills.Core.Interfaces; -public class AudioManager : MonoBehaviour +public class AudioManager : MonoBehaviour, IPausable { + /// + /// Play all audio, just music or no audio at all when the game is paused. + /// + public enum PauseBehavior + {PlayAllAudio, MusicOnly, NoAudio} + + public PauseBehavior currentPauseBehavior; + + public AudioMixer _audioMixer; + private AudioListener _audioListener; + + + private static AudioManager _instance; + private GameObject _player; + + /// + /// Singleton instance of the AudioManager. + /// + public static AudioManager Instance => _instance; + + void Awake() + { + _instance = this; + + // Register for post-boot initialization + BootCompletionService.RegisterInitAction(InitializePostBoot); + GameManager.Instance.RegisterPausableComponent(this); + } + + private void InitializePostBoot() + { + + } + // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { - + _player = QuickAccess.Instance.PlayerGameObject; + _audioListener = QuickAccess.Instance.MainCamera.GetComponent(); } - // Update is called once per frame - void Update() + public void SetAudioPauseBehavior(PauseBehavior newPauseBehavior) { - + switch (newPauseBehavior) + { + case PauseBehavior.PlayAllAudio: + _audioMixer.updateMode = AudioMixerUpdateMode.UnscaledTime; + AudioListener.pause = false; + break; + case PauseBehavior.MusicOnly: + _audioMixer.updateMode = AudioMixerUpdateMode.UnscaledTime; break; + //TODO: Pause all audio mixers except music mixer + case PauseBehavior.NoAudio: + _audioMixer.updateMode = AudioMixerUpdateMode.Normal; + AudioListener.pause = true; + break; + + } + } + + public void Pause() + { + SetAudioPauseBehavior(PauseBehavior.NoAudio); + } + + public void DoResume() + { + SetAudioPauseBehavior(PauseBehavior.PlayAllAudio); } } diff --git a/Assets/Sound/Quarry/QuarryAudio.prefab b/Assets/Sound/Quarry/QuarryAudio.prefab index ce20778e..e07cdd04 100644 --- a/Assets/Sound/Quarry/QuarryAudio.prefab +++ b/Assets/Sound/Quarry/QuarryAudio.prefab @@ -449,7 +449,7 @@ AudioSource: m_GameObject: {fileID: 6350035581257276269} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 3533147658878909314, guid: 727a7e4b6df4b0d47897f7d8ee7fa323, type: 2} + OutputAudioMixerGroup: {fileID: -281949353495416486, guid: 727a7e4b6df4b0d47897f7d8ee7fa323, type: 2} m_audioClip: {fileID: 0} m_Resource: {fileID: 0} m_PlayOnAwake: 0