feat: Settings menu functionality

This commit is contained in:
Gerard Gascón 2024-04-16 12:38:38 +02:00
parent a8d3544de7
commit 8382700441
5 changed files with 195 additions and 0 deletions

8
Assets/Audio.meta Normal file
View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 281d483c02e3af84d850ffa4367443a3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -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: {}

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fd8d4f04926f4a641b45bf06667f3761
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 24100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -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

View file

@ -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() {