- Home /
Pause Menu Volume
hi guys. i have a pause menu script that i want to script to control all in game volume. i want it to be controlled through a horizontal GUI slider, but i have been having problems with that. here's the script:
using UnityEngine;
using System.Collections;
public class PauseMenu : MonoBehaviour
{
public GUISkin myskin;
private Rect windowRect;
private bool paused = false , waited = true;
private bool options;
private float hSliderValue = 0.5f;
private void Start()
{
windowRect = new Rect(Screen.width / 2 - 100 , Screen.height / 2 - 100, 200, 200);
}
private void waiting()
{
waited = true;
}
private void Update ()
{
if (waited)
if(Input.GetKey(KeyCode.P) || Input.GetKey(KeyCode.Escape))
{
if (paused)
paused = false;
else
paused = true;
waited = false;
Invoke("waiting",0.3f);
}
if(paused)
Time.timeScale = 0;
else
Time.timeScale = 1;
if(paused)
AudioListener.pause = true;
else
AudioListener.pause = false;
if(options)
AudioListener.volume = 0.10f;
else
AudioListener.volume = 0.2f;
}
private void OnGUI()
{
if (paused)
windowRect = GUI.Window(0,windowRect, windowFunc, "Game Paused");
}
private void windowFunc(int id)
{
if(GUILayout.Button("Resume"))
{
paused = false;
}
if(GUILayout.Button("Volume"))
{
options = true;
}
if(GUILayout.Button("Return to Main Menu"))
{
Application.LoadLevel (0);
}
}
}
do you have any suggestions in c#? thanks!
Answer by Deoxyz · Jun 22, 2012 at 01:40 PM
I modified your script a bit. If you press volume, the button will be replaced by a slider. If you press resume, the volume will be the value of the slider.
I don't know what the if(waited) does, so I removed it from the update. It just stood there and did nothing.
If you want your slider to be higher or wider, you can add some GUILayoutOptions. Check out the links. I hope this helps :)
http://unity3d.com/support/documentation/ScriptReference/GUILayoutOption.html
http://unity3d.com/support/documentation/ScriptReference/GUILayout.HorizontalSlider.html
public GUISkin myskin;
private Rect windowRect;
private bool paused = false, waited = false;
private bool options;
private float hSliderValue = 0.5f;
private void Start()
{
windowRect = new Rect(Screen.width / 2 - 100, Screen.height / 2 - 100, 200, 200);
}
private void waiting()
{
waited = true;
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.P) || Input.GetKeyDown(KeyCode.Escape))
{
if (paused)
paused = false;
else
paused = true;
waited = false;
Invoke("waiting", 0.3f);
}
if (paused)
{
Time.timeScale = 0;
AudioListener.pause = true;
}
else
{
Time.timeScale = 1;
AudioListener.pause = false;
}
}
private void OnGUI()
{
if (paused)
{
windowRect = GUI.Window(0, windowRect, windowFunc, "Game Paused");
}
}
private void windowFunc(int id)
{
if (GUILayout.Button("Resume"))
{
paused = false;
options = false;
AudioListener.volume = hSliderValue;
}
if (!options)
{
if (GUILayout.Button("Volume"))
{
options = true;
}
}
else
{
hSliderValue = GUILayout.HorizontalSlider(hSliderValue, 0.0f, 1.0f);
}
if (GUILayout.Button("Return to Main Menu"))
{
Application.LoadLevel(0);
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220613073130im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Trying to make sliding volume bars. 1 Answer
Pause menu scripting help? 1 Answer
Hold the esc button for a pause menu 1 Answer
Pause Menu Quality Settings Error ? 1 Answer
Pause Menu Text Not Rendering 0 Answers