Skip to content

Commit 28eb1e7

Browse files
Merge pull request #103 from Satvik-Singh192/feat/soundeffect
feat: added a click soundeffect to all buttons in main menu
2 parents 807521a + 17a8153 commit 28eb1e7

File tree

7 files changed

+142
-15
lines changed

7 files changed

+142
-15
lines changed

Assets/Audio.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
331 KB
Binary file not shown.

Assets/Audio/button_click_sound.wav.meta

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Scenes/MainMenu.unity

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,6 +1306,7 @@ MonoBehaviour:
13061306
highScoreText: {fileID: 1516356445}
13071307
highScoreTextLegacy: {fileID: 0}
13081308
highScorePrefix: 'Best Time: '
1309+
clickSound: {fileID: 8300000, guid: d81d3106732af764fa7ffb8fb79c9b32, type: 3}
13091310
--- !u!4 &894188159
13101311
Transform:
13111312
m_ObjectHideFlags: 0
@@ -1477,6 +1478,7 @@ MonoBehaviour:
14771478
highScoreText: {fileID: 0}
14781479
highScoreTextLegacy: {fileID: 0}
14791480
highScorePrefix: 'Best Time: '
1481+
clickSound: {fileID: 8300000, guid: d81d3106732af764fa7ffb8fb79c9b32, type: 3}
14801482
--- !u!114 &944479920
14811483
MonoBehaviour:
14821484
m_ObjectHideFlags: 0
@@ -1658,6 +1660,7 @@ GameObject:
16581660
- component: {fileID: 1088860679}
16591661
- component: {fileID: 1088860678}
16601662
- component: {fileID: 1088860677}
1663+
- component: {fileID: 1088860681}
16611664
m_Layer: 5
16621665
m_Name: Button_Capsule
16631666
m_TagString: Untagged
@@ -1801,6 +1804,19 @@ CanvasRenderer:
18011804
m_PrefabAsset: {fileID: 0}
18021805
m_GameObject: {fileID: 1088860675}
18031806
m_CullTransparentMesh: 1
1807+
--- !u!114 &1088860681
1808+
MonoBehaviour:
1809+
m_ObjectHideFlags: 0
1810+
m_CorrespondingSourceObject: {fileID: 0}
1811+
m_PrefabInstance: {fileID: 0}
1812+
m_PrefabAsset: {fileID: 0}
1813+
m_GameObject: {fileID: 1088860675}
1814+
m_Enabled: 1
1815+
m_EditorHideFlags: 0
1816+
m_Script: {fileID: 11500000, guid: 295b4262c917e204fac964af50e1a2dc, type: 3}
1817+
m_Name:
1818+
m_EditorClassIdentifier:
1819+
clickSound: {fileID: 8300000, guid: d81d3106732af764fa7ffb8fb79c9b32, type: 3}
18041820
--- !u!1 &1121022249
18051821
GameObject:
18061822
m_ObjectHideFlags: 0
@@ -2188,6 +2204,7 @@ GameObject:
21882204
- component: {fileID: 1270036536}
21892205
- component: {fileID: 1270036535}
21902206
- component: {fileID: 1270036534}
2207+
- component: {fileID: 1270036538}
21912208
m_Layer: 5
21922209
m_Name: Button_Cube
21932210
m_TagString: Untagged
@@ -2331,6 +2348,19 @@ CanvasRenderer:
23312348
m_PrefabAsset: {fileID: 0}
23322349
m_GameObject: {fileID: 1270036532}
23332350
m_CullTransparentMesh: 1
2351+
--- !u!114 &1270036538
2352+
MonoBehaviour:
2353+
m_ObjectHideFlags: 0
2354+
m_CorrespondingSourceObject: {fileID: 0}
2355+
m_PrefabInstance: {fileID: 0}
2356+
m_PrefabAsset: {fileID: 0}
2357+
m_GameObject: {fileID: 1270036532}
2358+
m_Enabled: 1
2359+
m_EditorHideFlags: 0
2360+
m_Script: {fileID: 11500000, guid: 295b4262c917e204fac964af50e1a2dc, type: 3}
2361+
m_Name:
2362+
m_EditorClassIdentifier:
2363+
clickSound: {fileID: 8300000, guid: d81d3106732af764fa7ffb8fb79c9b32, type: 3}
23342364
--- !u!1 &1423960804
23352365
GameObject:
23362366
m_ObjectHideFlags: 0
@@ -2344,6 +2374,7 @@ GameObject:
23442374
- component: {fileID: 1423960808}
23452375
- component: {fileID: 1423960807}
23462376
- component: {fileID: 1423960806}
2377+
- component: {fileID: 1423960810}
23472378
m_Layer: 5
23482379
m_Name: Button_Sphere
23492380
m_TagString: Untagged
@@ -2487,6 +2518,19 @@ CanvasRenderer:
24872518
m_PrefabAsset: {fileID: 0}
24882519
m_GameObject: {fileID: 1423960804}
24892520
m_CullTransparentMesh: 1
2521+
--- !u!114 &1423960810
2522+
MonoBehaviour:
2523+
m_ObjectHideFlags: 0
2524+
m_CorrespondingSourceObject: {fileID: 0}
2525+
m_PrefabInstance: {fileID: 0}
2526+
m_PrefabAsset: {fileID: 0}
2527+
m_GameObject: {fileID: 1423960804}
2528+
m_Enabled: 1
2529+
m_EditorHideFlags: 0
2530+
m_Script: {fileID: 11500000, guid: 295b4262c917e204fac964af50e1a2dc, type: 3}
2531+
m_Name:
2532+
m_EditorClassIdentifier:
2533+
clickSound: {fileID: 8300000, guid: d81d3106732af764fa7ffb8fb79c9b32, type: 3}
24902534
--- !u!1 &1477543113
24912535
GameObject:
24922536
m_ObjectHideFlags: 0
@@ -3065,6 +3109,7 @@ GameObject:
30653109
- component: {fileID: 1655126094}
30663110
- component: {fileID: 1655126093}
30673111
- component: {fileID: 1655126092}
3112+
- component: {fileID: 1655126095}
30683113
m_Layer: 5
30693114
m_Name: Instruction
30703115
m_TagString: Untagged
@@ -3233,6 +3278,19 @@ CanvasRenderer:
32333278
m_PrefabAsset: {fileID: 0}
32343279
m_GameObject: {fileID: 1655126090}
32353280
m_CullTransparentMesh: 1
3281+
--- !u!114 &1655126095
3282+
MonoBehaviour:
3283+
m_ObjectHideFlags: 0
3284+
m_CorrespondingSourceObject: {fileID: 0}
3285+
m_PrefabInstance: {fileID: 0}
3286+
m_PrefabAsset: {fileID: 0}
3287+
m_GameObject: {fileID: 1655126090}
3288+
m_Enabled: 1
3289+
m_EditorHideFlags: 0
3290+
m_Script: {fileID: 11500000, guid: 295b4262c917e204fac964af50e1a2dc, type: 3}
3291+
m_Name:
3292+
m_EditorClassIdentifier:
3293+
clickSound: {fileID: 0}
32363294
--- !u!1 &1668237878
32373295
GameObject:
32383296
m_ObjectHideFlags: 0

Assets/Scripts/ButtonClickSound.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using UnityEngine;
2+
using UnityEngine.UI;
3+
4+
public class ButtonClickSound : MonoBehaviour
5+
{
6+
public AudioClip clickSound;
7+
8+
void Start()
9+
{
10+
Button btn = GetComponent<Button>();
11+
if (btn != null)
12+
{
13+
btn.onClick.AddListener(PlayClickSound);
14+
}
15+
}
16+
17+
void PlayClickSound()
18+
{
19+
AudioSource.PlayClipAtPoint(clickSound, Camera.main.transform.position);
20+
}
21+
}

Assets/Scripts/ButtonClickSound.cs.meta

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Scripts/MainMenu.cs

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using UnityEngine;
22
using UnityEngine.SceneManagement;
33
using TMPro;
4+
using System.Collections;
45

56
public class MainMenu : MonoBehaviour
67
{
@@ -20,22 +21,19 @@ public class MainMenu : MonoBehaviour
2021
[Tooltip("Prefix text for high score display (e.g., 'Best Time: ').")]
2122
public string highScorePrefix = "Best Time: ";
2223

24+
[Header("Button Click Sound")]
25+
public AudioClip clickSound;
26+
2327
private void Start()
2428
{
25-
// Ensure ProgressManager exists and loads progress
2629
if (ProgressManager.Instance == null)
2730
{
2831
GameObject progressManagerObj = new GameObject("ProgressManager");
2932
progressManagerObj.AddComponent<ProgressManager>();
3033
}
31-
32-
// Display high score
3334
UpdateHighScoreDisplay();
3435
}
3536

36-
/// <summary>
37-
/// Updates the high score display with the saved high score
38-
/// </summary>
3937
private void UpdateHighScoreDisplay()
4038
{
4139
if (ProgressManager.Instance == null)
@@ -55,44 +53,61 @@ private void UpdateHighScoreDisplay()
5553
displayText += "N/A";
5654
}
5755

58-
// Update TextMeshProUGUI if assigned
5956
if (highScoreText != null)
6057
{
6158
highScoreText.text = displayText;
6259
}
6360

64-
// Update legacy Text component if assigned
6561
if (highScoreTextLegacy != null)
6662
{
6763
highScoreTextLegacy.text = displayText;
6864
}
6965
}
66+
IEnumerator DelayedLoad(string sceneName)
67+
{
68+
if (clickSound != null)
69+
{
70+
AudioSource.PlayClipAtPoint(clickSound, Camera.main.transform.position, 1f);
71+
}
72+
73+
yield return new WaitForSeconds(0.15f);
7074

71-
// Called by the Play button on the main menu. By default it will open the Level Select scene.
75+
SceneManager.LoadScene(sceneName);
76+
}
7277
public void PlayGame()
7378
{
7479
if (!string.IsNullOrEmpty(levelSelectSceneName))
7580
{
76-
SceneManager.LoadScene(levelSelectSceneName);
81+
StartCoroutine(DelayedLoad(levelSelectSceneName));
7782
}
7883
else
7984
{
80-
SceneManager.LoadScene(levelSelectBuildIndex);
85+
StartCoroutine(DelayedLoad(SceneManager.GetSceneByBuildIndex(levelSelectBuildIndex).name));
8186
}
8287
}
83-
8488
public void QuitGame()
8589
{
90+
if (clickSound != null)
91+
AudioSource.PlayClipAtPoint(clickSound, Camera.main.transform.position);
92+
93+
StartCoroutine(QuitDelayed());
94+
}
95+
96+
IEnumerator QuitDelayed()
97+
{
98+
yield return new WaitForSeconds(0.15f);
99+
86100
#if UNITY_EDITOR
87-
UnityEditor.EditorApplication.isPlaying = false;
101+
Debug.Log("Quit game (Editor)");
102+
UnityEditor.EditorApplication.isPlaying = false;
88103
#else
104+
Debug.Log("Quit game (Build)");
89105
Application.Quit();
90106
#endif
91107
}
92108
public void GoToShop()
93109
{
94-
// This command loads the scene we created and named "Shop"
95-
SceneManager.LoadScene("Shop");
110+
StartCoroutine(DelayedLoad("Shop"));
96111
Debug.Log("Loading Shop Scene...");
97112
}
98113
}

0 commit comments

Comments
 (0)