diff --git a/Assets/Audio.meta b/Assets/Audio.meta new file mode 100644 index 0000000..ab4c3ce --- /dev/null +++ b/Assets/Audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: abff26c696e8db04fb9663379f65cd24 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/CJ20_P0.wav b/Assets/Audio/CJ20_P0.wav new file mode 100644 index 0000000..71863dc Binary files /dev/null and b/Assets/Audio/CJ20_P0.wav differ diff --git a/Assets/Audio/CJ20_P0.wav.meta b/Assets/Audio/CJ20_P0.wav.meta new file mode 100644 index 0000000..d7d1846 --- /dev/null +++ b/Assets/Audio/CJ20_P0.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 937f9a0a4f0f36944b38bc5cd09cf785 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/CJ20_P1.wav b/Assets/Audio/CJ20_P1.wav new file mode 100644 index 0000000..42f3bb4 Binary files /dev/null and b/Assets/Audio/CJ20_P1.wav differ diff --git a/Assets/Audio/CJ20_P1.wav.meta b/Assets/Audio/CJ20_P1.wav.meta new file mode 100644 index 0000000..96f4eb6 --- /dev/null +++ b/Assets/Audio/CJ20_P1.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: afc545912c875cf4b9ef9f0ef6f69022 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/CJ20_P2.wav b/Assets/Audio/CJ20_P2.wav new file mode 100644 index 0000000..d8ce7d7 Binary files /dev/null and b/Assets/Audio/CJ20_P2.wav differ diff --git a/Assets/Audio/CJ20_P2.wav.meta b/Assets/Audio/CJ20_P2.wav.meta new file mode 100644 index 0000000..646ad6e --- /dev/null +++ b/Assets/Audio/CJ20_P2.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 049d06903145dc7409b74df0345af8d0 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/CJ20_P3.wav b/Assets/Audio/CJ20_P3.wav new file mode 100644 index 0000000..222ed7b Binary files /dev/null and b/Assets/Audio/CJ20_P3.wav differ diff --git a/Assets/Audio/CJ20_P3.wav.meta b/Assets/Audio/CJ20_P3.wav.meta new file mode 100644 index 0000000..b0dca49 --- /dev/null +++ b/Assets/Audio/CJ20_P3.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 9e03744400342834f99129aa5a9e7eda +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/SoundManager.prefab b/Assets/Prefabs/SoundManager.prefab new file mode 100644 index 0000000..9d6249d --- /dev/null +++ b/Assets/Prefabs/SoundManager.prefab @@ -0,0 +1,444 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1515045591526965757 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1515045591526965735} + - component: {fileID: 1515045591526965752} + - component: {fileID: 1515045591526965753} + - component: {fileID: 1515045591526965754} + - component: {fileID: 1515045591526965755} + - component: {fileID: 1515045591526965756} + m_Layer: 0 + m_Name: SoundManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1515045591526965735 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1515045591526965757} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1515045591526965752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1515045591526965757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ecd0efd0152e3a148bb346c7a9ed96d4, type: 3} + m_Name: + m_EditorClassIdentifier: + masterVolume: 0.4 + musicVolume: 0.4 + sfxVolume: 0.4 + fadeTime: 0.5 + baseMusic: {fileID: 1515045591526965753} + dimensionMusicLayer: + - {fileID: 1515045591526965754} + - {fileID: 1515045591526965755} + - {fileID: 1515045591526965756} + dimensionMusicID: 0 +--- !u!82 &1515045591526965753 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1515045591526965757} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 937f9a0a4f0f36944b38bc5cd09cf785, type: 3} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &1515045591526965754 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1515045591526965757} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: afc545912c875cf4b9ef9f0ef6f69022, type: 3} + m_PlayOnAwake: 1 + m_Volume: 0 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &1515045591526965755 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1515045591526965757} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 049d06903145dc7409b74df0345af8d0, type: 3} + m_PlayOnAwake: 1 + m_Volume: 0 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!82 &1515045591526965756 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1515045591526965757} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 8300000, guid: 9e03744400342834f99129aa5a9e7eda, type: 3} + m_PlayOnAwake: 1 + m_Volume: 0 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 diff --git a/Assets/Prefabs/SoundManager.prefab.meta b/Assets/Prefabs/SoundManager.prefab.meta new file mode 100644 index 0000000..27434be --- /dev/null +++ b/Assets/Prefabs/SoundManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 69bc9a9cf445e8e498bfbed18a1eccb8 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/MainMenu.unity b/Assets/Scenes/MainMenu.unity index 92d7746..0e8390e 100644 --- a/Assets/Scenes/MainMenu.unity +++ b/Assets/Scenes/MainMenu.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.010485779, g: 0.052983798, b: 0.15318781, a: 1} + m_IndirectSpecularColor: {r: 0.010481385, g: 0.052960172, b: 0.15313068, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -1402,7 +1402,19 @@ MonoBehaviour: m_Value: 0.775 m_OnValueChanged: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 1533964580} + m_TargetAssemblyTypeName: MainMenuController, Assembly-CSharp + m_MethodName: OnMasterVolumeChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!1 &450194351 GameObject: m_ObjectHideFlags: 0 @@ -3813,7 +3825,19 @@ MonoBehaviour: m_Value: 0.775 m_OnValueChanged: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 1533964580} + m_TargetAssemblyTypeName: MainMenuController, Assembly-CSharp + m_MethodName: OnMusicVolumeChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!1 &1471212218 GameObject: m_ObjectHideFlags: 0 @@ -3941,7 +3965,19 @@ MonoBehaviour: m_Value: 0.775 m_OnValueChanged: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 1533964580} + m_TargetAssemblyTypeName: MainMenuController, Assembly-CSharp + m_MethodName: OnSfxVolumeChanged + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!1 &1484841314 GameObject: m_ObjectHideFlags: 0 @@ -4407,6 +4443,9 @@ MonoBehaviour: startMenuParent: {fileID: 450194352} optionsParent: {fileID: 1284390881} helpParent: {fileID: 1400498571} + masterVolumeSlider: {fileID: 423514904} + musicVolumeSlider: {fileID: 1467228183} + sfxVolumeSlider: {fileID: 1473163820} --- !u!1 &1563295205 GameObject: m_ObjectHideFlags: 0 @@ -4693,6 +4732,63 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1606285494} m_CullTransparentMesh: 1 +--- !u!1001 &1634808412 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965735, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1515045591526965757, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} + propertyPath: m_Name + value: SoundManager + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 69bc9a9cf445e8e498bfbed18a1eccb8, type: 3} --- !u!1 &1680136120 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index ba1e498..529037a 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -40,6 +40,8 @@ public class GameManager : MonoBehaviour DimensionController.STARTING_HP, DimensionController.STARTING_HP); uiController.UpdatePointsText(points); + + SoundManager.Instance.SwitchMusicLayer(1); } } diff --git a/Assets/Scripts/MainMenuController.cs b/Assets/Scripts/MainMenuController.cs index 9f9f7b2..ddbf59a 100644 --- a/Assets/Scripts/MainMenuController.cs +++ b/Assets/Scripts/MainMenuController.cs @@ -1,8 +1,7 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using TMPro; +using UnityEngine.UI; public class MainMenuController : MonoBehaviour { @@ -27,8 +26,14 @@ public class MainMenuController : MonoBehaviour MenuMode? lastMode; MenuMode mode; + [Header("Sliders")] + [SerializeField] private Slider masterVolumeSlider; + [SerializeField] private Slider musicVolumeSlider; + [SerializeField] private Slider sfxVolumeSlider; + private void Start() { SetMenuMode(MenuMode.MainMenu); + SetMenuSliders(); } public void SetMenuMode(MenuMode mode) { //meh @@ -68,4 +73,26 @@ public class MainMenuController : MonoBehaviour public void OnQuit(){ Application.Quit(); } + + private void SetMenuSliders() + { + masterVolumeSlider.value = SoundManager.Instance.masterVolume; + musicVolumeSlider.value = SoundManager.Instance.musicVolume; + sfxVolumeSlider.value = SoundManager.Instance.sfxVolume; + } + + public void OnMasterVolumeChanged() + { + SoundManager.Instance.OnMasterVolumeChanged(masterVolumeSlider.value); + } + + public void OnMusicVolumeChanged() + { + SoundManager.Instance.OnMusicVolumeChanged(musicVolumeSlider.value); + } + + public void OnSfxVolumeChanged() + { + SoundManager.Instance.OnSfxVolumeChanged(sfxVolumeSlider.value); + } } diff --git a/Assets/Scripts/SoundManager.cs b/Assets/Scripts/SoundManager.cs new file mode 100644 index 0000000..42e9d29 --- /dev/null +++ b/Assets/Scripts/SoundManager.cs @@ -0,0 +1,94 @@ +using System.Collections; +using UnityEngine; + +public class SoundManager : MonoBehaviour +{ + public static SoundManager Instance { get; private set; } + + [Header("Sound Settings")] + [Range(0f,1f)] public float masterVolume; + [Range(0f,1f)] public float musicVolume; + [Range(0f,1f)] public float sfxVolume; + [SerializeField] private float fadeTime; + + [Header("Music")] + [SerializeField] private AudioSource baseMusic; + [SerializeField] private AudioSource[] dimensionMusicLayer; + + [Header("Debug Values")] + [SerializeField, ReadOnly] private int dimensionMusicID; + + private void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + } + else + { + Instance = this; + baseMusic.volume = masterVolume * musicVolume; + foreach (var layer in dimensionMusicLayer) + { + layer.volume = 0; + } + + dimensionMusicID = -1; + DontDestroyOnLoad(gameObject); + } + } + + public void SwitchMusicLayer(int dimensionID) + { + if (dimensionMusicID != -1) StartCoroutine(FadeOut(dimensionMusicID)); + StartCoroutine(FadeIn(dimensionID)); + dimensionMusicID = dimensionID; + } + + private IEnumerator FadeIn(int dimensionID) + { + float time = 0; + while (time < fadeTime) + { + dimensionMusicLayer[dimensionID].volume = Mathf.Lerp(0, masterVolume * musicVolume, time / fadeTime); + yield return new WaitForSeconds(0.05f); + time += 0.05f; + } + } + + private IEnumerator FadeOut(int dimensionID) + { + float time = 0; + while (time < fadeTime) + { + dimensionMusicLayer[dimensionID].volume = Mathf.Lerp(masterVolume * musicVolume, 0, time / fadeTime); + yield return new WaitForSeconds(0.05f); + time += 0.05f; + } + } + + public void OnMasterVolumeChanged(float value) + { + masterVolume = value; + SetAllSoundsVolume(); + } + + public void OnMusicVolumeChanged(float value) + { + musicVolume = value; + SetAllSoundsVolume(); + } + + public void OnSfxVolumeChanged(float value) + { + sfxVolume = value; + SetAllSoundsVolume(); + } + + private void SetAllSoundsVolume() + { + var trueMusicVolume = masterVolume * musicVolume; + baseMusic.volume = trueMusicVolume; + if (dimensionMusicID != -1) dimensionMusicLayer[dimensionMusicID].volume = trueMusicVolume; + } +} diff --git a/Assets/Scripts/SoundManager.cs.meta b/Assets/Scripts/SoundManager.cs.meta new file mode 100644 index 0000000..983fca3 --- /dev/null +++ b/Assets/Scripts/SoundManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ecd0efd0152e3a148bb346c7a9ed96d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: