diff --git a/Assets/AudioMixer.mixer b/Assets/AudioMixer.mixer new file mode 100644 index 0000000..05298bf --- /dev/null +++ b/Assets/AudioMixer.mixer @@ -0,0 +1,144 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!243 &-5985036292871575848 +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: 5bdfe230200494b4dba2d07588c7c60d + m_Children: [] + m_Volume: 831694893cecc104e83cd13eec93d28c + m_Pitch: 5aeb6a175f195024a87861062e2ec1b0 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: -5067953075322291121} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &-5067953075322291121 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 87ce651d7c89cfa44afcecbb0fff4abd + m_EffectName: Attenuation + m_MixLevel: df4b34f13069a454cb0de1361d5c4099 + 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: AudioMixer + 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: 8e54073feec66d24c8b5b5321b86da6f + name: MasterVolume + - guid: 831694893cecc104e83cd13eec93d28c + name: MusicVolume + - guid: 97cc39ce50c2b85439b8361ceae3f4c6 + name: SFXVolume + m_AudioMixerGroupViews: + - guids: + - 1647cf21931ffb4409abd5f86b5ba22b + - 5bdfe230200494b4dba2d07588c7c60d + - 306f67f3e059d2c4aaaef306930b737e + 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: 1647cf21931ffb4409abd5f86b5ba22b + m_Children: + - {fileID: -5985036292871575848} + - {fileID: 3079392121493439853} + m_Volume: 8e54073feec66d24c8b5b5321b86da6f + m_Pitch: f023bc3b372a9df469e34b83fc9efc66 + 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: bdd917cc2a7b59c45a66df37be3e3489 + m_EffectName: Attenuation + m_MixLevel: c9d36b6a18286a8449cc204da4cc3140 + 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: 8474d9129ecb5954ea867453e7561687 + m_FloatValues: {} + m_TransitionOverrides: {} +--- !u!243 &3079392121493439853 +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: 306f67f3e059d2c4aaaef306930b737e + m_Children: [] + m_Volume: 97cc39ce50c2b85439b8361ceae3f4c6 + m_Pitch: 9119b1dfcb88e4e4c917090c57fa1680 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 5127884578886668124} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &5127884578886668124 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 0f75e42fe6e091c4ca36a6aa676fff0f + m_EffectName: Attenuation + m_MixLevel: 45c4e84286ed5a345b779472c0df9874 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 diff --git a/Assets/AudioMixer.mixer.meta b/Assets/AudioMixer.mixer.meta new file mode 100644 index 0000000..fa400c6 --- /dev/null +++ b/Assets/AudioMixer.mixer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3490106d3e6edc143b9179d3107780dd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 24100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameManager.prefab b/Assets/GameManager.prefab index 9f66d7b..de2b235 100644 --- a/Assets/GameManager.prefab +++ b/Assets/GameManager.prefab @@ -573,3 +573,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ab14394efecbd6540af369ced75e81d0, type: 3} m_Name: m_EditorClassIdentifier: Assembly-CSharp::SoundSettingManager + audioMixer: {fileID: 24100000, guid: 3490106d3e6edc143b9179d3107780dd, type: 2} diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 08b6783..f7d22f6 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -3979,17 +3979,6 @@ Transform: - {fileID: 1210745724} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1898647305 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 5836996391021161412, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - m_PrefabInstance: {fileID: 6325623361260993107} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3ba23d5f6c337c34caaac9a4d8aab191, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::MenuScreen --- !u!1 &1966866168 GameObject: m_ObjectHideFlags: 0 @@ -4329,6 +4318,10 @@ PrefabInstance: propertyPath: dialogueText value: objectReference: {fileID: 2063514703} + - target: {fileID: 1410439939888368689, guid: 9f59bbee72927d649b032622c1c0f2f5, type: 3} + propertyPath: audioMixer + value: + objectReference: {fileID: 24100000, guid: 3490106d3e6edc143b9179d3107780dd, type: 2} - target: {fileID: 5519027142145697695, guid: 9f59bbee72927d649b032622c1c0f2f5, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -4386,50 +4379,10 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 1704696510} m_Modifications: - - target: {fileID: 818899427131401759, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - target: {fileID: 1376587328550839904, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} propertyPath: m_Name value: UI objectReference: {fileID: 0} - - target: {fileID: 2975696880262954876, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4155624016714589187, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: m_AnchoredPosition.y - value: -259.2 - objectReference: {fileID: 0} - - target: {fileID: 4264548731807291060, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4265459964761688869, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: m_AnchoredPosition.y - value: 27 - objectReference: {fileID: 0} - - target: {fileID: 4906462856215206936, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: m_AnchoredPosition.y - value: -195 - objectReference: {fileID: 0} - - target: {fileID: 5101319162034548862, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5514935285560916770, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6476180199089286077, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: screens.Array.size - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 6476180199089286077, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: 'screens.Array.data[3]' - value: - objectReference: {fileID: 1898647305} - target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -4470,10 +4423,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7535213278904715570, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] diff --git a/Assets/Scripts/UI/SoundSettingManager.cs b/Assets/Scripts/Management/SoundSettingManager.cs similarity index 62% rename from Assets/Scripts/UI/SoundSettingManager.cs rename to Assets/Scripts/Management/SoundSettingManager.cs index e6c5596..5b2c19a 100644 --- a/Assets/Scripts/UI/SoundSettingManager.cs +++ b/Assets/Scripts/Management/SoundSettingManager.cs @@ -1,9 +1,12 @@ using UnityEngine; +using UnityEngine.Audio; using UnityEngine.SceneManagement; using UnityEngine.UI; public class SoundSettingManager : MonoBehaviour { + public AudioMixer audioMixer; + float masterVolume; float musicVolume; float sfxVolume; @@ -28,21 +31,40 @@ public void ReloadReferences() MasterSlider.onValueChanged.AddListener(OnMasterValueChanged); SfxSlider.onValueChanged.AddListener(OnSfxValueChanged); MusicSlider.onValueChanged.AddListener(OnMusicValueChanged); + + MasterSlider.value = masterVolume; + SfxSlider.value = sfxVolume; + MusicSlider.value = musicVolume; } public void OnMasterValueChanged(float newValue) { masterVolume = newValue; + SetVolumeFloat(newValue, "MasterVolume"); } public void OnSfxValueChanged(float newValue) { sfxVolume = newValue; + SetVolumeFloat(newValue, "SFXVolume"); } public void OnMusicValueChanged(float newValue) { musicVolume = newValue; + SetVolumeFloat(newValue, "MusicVolume"); + } + + private void SetVolumeFloat(float sliderVal, string mixerGroup) + { + // Convert linear 0-1 to dB (-80 to 0 range) + float dbValue = Mathf.Log10(sliderVal) * 20; + if (sliderVal == 0) + { + dbValue = -80; + } + + audioMixer.SetFloat(mixerGroup, dbValue); } #region Sound Settings Data Save/Load @@ -55,10 +77,18 @@ public void SaveSoundSettingsData(ref SoundSettingSaveData data) public void LoadSoundSettingsData(SoundSettingSaveData data) { - musicVolume = data.musicVolume; - sfxVolume = data.sfxVolume; - masterVolume = data.masterVolume; - } + musicVolume = data.musicVolume; + sfxVolume = data.sfxVolume; + masterVolume = data.masterVolume; + + MasterSlider.value = masterVolume; + SfxSlider.value = sfxVolume; + MusicSlider.value = musicVolume; + + SetVolumeFloat(masterVolume, "MasterVolume"); + SetVolumeFloat(musicVolume, "MusicVolume"); + SetVolumeFloat(sfxVolume, "SFXVolume"); + } #endregion } diff --git a/Assets/Scripts/UI/SoundSettingManager.cs.meta b/Assets/Scripts/Management/SoundSettingManager.cs.meta similarity index 100% rename from Assets/Scripts/UI/SoundSettingManager.cs.meta rename to Assets/Scripts/Management/SoundSettingManager.cs.meta diff --git a/Assets/UI.prefab b/Assets/UI.prefab index 27215a1..2405907 100644 --- a/Assets/UI.prefab +++ b/Assets/UI.prefab @@ -1479,9 +1479,9 @@ Transform: m_LocalScale: {x: 1.7391305, y: 1.7391305, z: 1.7391305} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 5210793787358148244} - {fileID: 3172362146895278104} - {fileID: 8838351739978356113} + - {fileID: 5210793787358148244} - {fileID: 4317687165807747350} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}