From 29af8817a77403679545976c79f6dc809bc85f7f Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Thu, 4 Sep 2025 15:59:58 -0700 Subject: [PATCH] Randomized music --- Assets/Scenes/GamePlayer.unity | 24 ++++++++-- Assets/Scripts/GameMusicHandler.cs | 60 +++++++++++++++++++++++++ Assets/Scripts/GameMusicHandler.cs.meta | 2 + Assets/Scripts/GamePlayer.cs | 4 +- 4 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 Assets/Scripts/GameMusicHandler.cs create mode 100644 Assets/Scripts/GameMusicHandler.cs.meta diff --git a/Assets/Scenes/GamePlayer.unity b/Assets/Scenes/GamePlayer.unity index a3a953e..e8f1d7b 100644 --- a/Assets/Scenes/GamePlayer.unity +++ b/Assets/Scenes/GamePlayer.unity @@ -4979,6 +4979,7 @@ GameObject: m_Component: - component: {fileID: 1625416040} - component: {fileID: 1625416039} + - component: {fileID: 1625416041} m_Layer: 0 m_Name: SongLoop m_TagString: Untagged @@ -4997,11 +4998,11 @@ AudioSource: serializedVersion: 4 OutputAudioMixerGroup: {fileID: 0} m_audioClip: {fileID: 0} - m_Resource: {fileID: 8300000, guid: 99cb5320fee003746a29683a53dd3337, type: 3} - m_PlayOnAwake: 1 + m_Resource: {fileID: 0} + m_PlayOnAwake: 0 m_Volume: 1 m_Pitch: 1 - Loop: 1 + Loop: 0 Mute: 0 Spatialize: 0 SpatializePostEffects: 0 @@ -5098,6 +5099,23 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1625416041 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1625416038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 81a98a63df08841c4b3fdc71ceecda4c, type: 3} + m_Name: + m_EditorClassIdentifier: '::' + audioClips: + - {fileID: 8300000, guid: ea648a173226047439e18c96ebe3c1bb, type: 3} + - {fileID: 8300000, guid: bdf9c412cfb2642209d10186296c0782, type: 3} + - {fileID: 8300000, guid: f9fc94c25bdee4c0d9f5774720bd4cfc, type: 3} + - {fileID: 8300000, guid: 0e89a6f887c07452aae4a602586ec917, type: 3} --- !u!1 &1639562819 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/GameMusicHandler.cs b/Assets/Scripts/GameMusicHandler.cs new file mode 100644 index 0000000..5510eb2 --- /dev/null +++ b/Assets/Scripts/GameMusicHandler.cs @@ -0,0 +1,60 @@ +using UnityEngine; + +[RequireComponent(typeof(AudioSource))] +public class GameMusicHandler : MonoBehaviour +{ + public AudioClip[] audioClips; + private AudioSource audioSource; + private int lastIndex = -1; + private bool isPaused = false; + + void Awake() + { + audioSource = GetComponent(); + PlayRandomClip(); + } + + void Update() + { + if (!audioSource.isPlaying && !isPaused) PlayRandomClip(); + } + + void PlayRandomClip() + { + if (audioClips.Length == 0) return; + + int index; + do + { + index = Random.Range(0, audioClips.Length); + } while (audioClips.Length > 1 && index == lastIndex); + + lastIndex = index; + audioSource.clip = audioClips[index]; + audioSource.Play(); + } + + public void PauseMusic() + { + if (audioSource.isPlaying) + { + audioSource.Pause(); + isPaused = true; + } + } + + public void ResumeMusic() + { + if (isPaused) + { + audioSource.Play(); + isPaused = false; + } + } + + public void RestartMusic() + { + audioSource.Stop(); + audioSource.Play(); + } +} diff --git a/Assets/Scripts/GameMusicHandler.cs.meta b/Assets/Scripts/GameMusicHandler.cs.meta new file mode 100644 index 0000000..a9509ad --- /dev/null +++ b/Assets/Scripts/GameMusicHandler.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 81a98a63df08841c4b3fdc71ceecda4c \ No newline at end of file diff --git a/Assets/Scripts/GamePlayer.cs b/Assets/Scripts/GamePlayer.cs index 9144a0c..633e672 100644 --- a/Assets/Scripts/GamePlayer.cs +++ b/Assets/Scripts/GamePlayer.cs @@ -639,7 +639,7 @@ public class GamePlayer : MonoBehaviour { Cursor.visible = true; Cursor.lockState = CursorLockMode.None; - backgroundMusic.Pause(); + backgroundMusic.GetComponent().PauseMusic(); pausePanel.SetActive(true); } @@ -648,7 +648,7 @@ public class GamePlayer : MonoBehaviour lastMoveTime = Time.time; Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; - backgroundMusic.Play(); + backgroundMusic.GetComponent().ResumeMusic(); pausePanel.SetActive(false); if (GamePlayerPauseMenu.Instance.editingUI == true) GamePlayerPauseMenu.Instance.ToggleEditingUI(); }