diff --git a/Assets/Audio.meta b/Assets/Audio.meta new file mode 100644 index 0000000..7123898 --- /dev/null +++ b/Assets/Audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 281d483c02e3af84d850ffa4367443a3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/MainMixer.mixer b/Assets/Audio/MainMixer.mixer new file mode 100644 index 0000000..59c3a51 --- /dev/null +++ b/Assets/Audio/MainMixer.mixer @@ -0,0 +1,142 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!243 &-7160213631606786143 +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: 368ea2813ad52084fb26726926ce27f6 + m_Children: [] + m_Volume: 725f4f70ac35cfa469dde004084af0ee + m_Pitch: f337aba7af13f6a4f988c470fad714bb + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: -4409933510484433384} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &-4409933510484433384 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: ed152c53560707d4e94edb5e2ac4f888 + m_EffectName: Attenuation + m_MixLevel: 38d0be799db8cdc42adff4256ff56784 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!243 &-3553563078259493616 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SFX + m_AudioMixer: {fileID: 24100000} + m_GroupID: 6da9bf99c784a0d439b29e46d5f2094b + m_Children: [] + m_Volume: 7faa3be3dcd5a434998f419db9708169 + m_Pitch: a475cc8c54f6dcf4699c036293414b3c + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: -273637595845761401} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &-273637595845761401 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 1ec5583d7db4d3745b9f3712c7210656 + m_EffectName: Attenuation + m_MixLevel: 900ab2eb5320cba4a93462b5e230224e + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!241 &24100000 +AudioMixerController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: MainMixer + m_OutputGroup: {fileID: 0} + m_MasterGroup: {fileID: 24300002} + m_Snapshots: + - {fileID: 24500006} + m_StartSnapshot: {fileID: 24500006} + m_SuspendThreshold: -80 + m_EnableSuspend: 1 + m_UpdateMode: 0 + m_ExposedParameters: + - guid: 725f4f70ac35cfa469dde004084af0ee + name: Music + - guid: 7faa3be3dcd5a434998f419db9708169 + name: SFX + m_AudioMixerGroupViews: + - guids: + - b2dec02194d0b114a8361a68cb71d5ab + - 368ea2813ad52084fb26726926ce27f6 + - 6da9bf99c784a0d439b29e46d5f2094b + name: View + m_CurrentViewIndex: 0 + m_TargetSnapshot: {fileID: 24500006} +--- !u!243 &24300002 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Master + m_AudioMixer: {fileID: 24100000} + m_GroupID: b2dec02194d0b114a8361a68cb71d5ab + m_Children: + - {fileID: -7160213631606786143} + - {fileID: -3553563078259493616} + m_Volume: 2e11bea9df9faf54dbed06a1de08b32c + m_Pitch: 24c916b38f3938e459200f97d154eab4 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 24400004} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &24400004 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 79704c03dfccc8d49b37fb9f049f7002 + m_EffectName: Attenuation + m_MixLevel: a92d07ee2e1e0254f95ed8aaa7499935 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!245 &24500006 +AudioMixerSnapshotController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Snapshot + m_AudioMixer: {fileID: 24100000} + m_SnapshotID: 40d692ffdb9e1dc409fe16f0a5c11f0b + m_FloatValues: {} + m_TransitionOverrides: {} diff --git a/Assets/Audio/MainMixer.mixer.meta b/Assets/Audio/MainMixer.mixer.meta new file mode 100644 index 0000000..777fd03 --- /dev/null +++ b/Assets/Audio/MainMixer.mixer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd8d4f04926f4a641b45bf06667f3761 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 24100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 33e8c79..7d7e4da 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -684,6 +684,10 @@ MonoBehaviour: settingsUIGroup: {fileID: 1318041772} closeSettingsButton: {fileID: 928064089} transitionDuration: 0.25 + musicToggle: {fileID: 557112855} + sfxToggle: {fileID: 1000034091} + alwaysOnTopToggle: {fileID: 2076377159} + mainMixer: {fileID: 24100000, guid: fd8d4f04926f4a641b45bf06667f3761, type: 2} --- !u!1 &379057220 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/View/UI/SettingsMenu.cs b/Assets/Scripts/View/UI/SettingsMenu.cs index 9d44196..7638aac 100644 --- a/Assets/Scripts/View/UI/SettingsMenu.cs +++ b/Assets/Scripts/View/UI/SettingsMenu.cs @@ -1,6 +1,9 @@ using System; using DG.Tweening; +using SatorImaging.AppWindowUtility; using UnityEngine; +using UnityEngine.Audio; +using UnityEngine.Serialization; using UnityEngine.UI; namespace View.UI { @@ -15,9 +18,39 @@ namespace View.UI { [Space] [SerializeField] private float transitionDuration = .5f; + [Space] + [SerializeField] private Toggle musicToggle; + [SerializeField] private Toggle sfxToggle; + [SerializeField] private Toggle alwaysOnTopToggle; + + [Space] + [SerializeField] private AudioMixer mainMixer; + private void Awake() { openSettingsButton.onClick.AddListener(OpenSettings); closeSettingsButton.onClick.AddListener(CloseSettings); + + musicToggle.onValueChanged.AddListener(MusicStateChange); + sfxToggle.onValueChanged.AddListener(SFXStateChange); + alwaysOnTopToggle.onValueChanged.AddListener(AlwaysOnTopStateChange); + } + + private void AlwaysOnTopStateChange(bool state) { + AppWindowUtility.AlwaysOnTop = state; + } + + private void SFXStateChange(bool state) { + if (state) + mainMixer.SetFloat("SFX", Mathf.Log10(1f) * 20); + else + mainMixer.SetFloat("SFX", Mathf.Log10(.0001f) * 20); + } + + private void MusicStateChange(bool state) { + if (state) + mainMixer.SetFloat("Music", Mathf.Log10(1f) * 20); + else + mainMixer.SetFloat("Music", Mathf.Log10(.0001f) * 20); } private void OpenSettings() {