- Home /
How to adjust In-Game volume in C#?
Hello! I am currently trying to figure out how to adjust the In-Game volume via a GUI Slider. I've done this before, but my hard-drive was wiped so I lost my script and a lot other files. I remember that I used a hSliderValue to adjust a AudioSource component to turn the volume up or down. How would I do this? I wrote some code to attempt this but it did not work. Here is the code(In the "AudioOptions" void) using UnityEngine; using System.Collections;
public class GUI_menu : MonoBehaviour {
private string CurMenu;
public float hSliderValue = 0.0f;
// Use this for initialization
void Start () {
CurMenu = "Main";
}
// Update is called once per frame
void Update () {
AudioListener.volume = hSliderValue/10.0;
}
void ToMenu(string menu)
{
CurMenu = menu;
}
void OnGUI()
{
if(CurMenu == "Main")
Main ();
if(CurMenu == "Options")
Options ();
if(CurMenu == "GraphOptions")
GraphOptions ();
}
private void Main()
{
if(GUI.Button(new Rect(0, 0, 128, 32),"Play Limp"))
{
Application.LoadLevel("Level 1");
}
if(GUI.Button(new Rect(0, 36, 128, 32),"Options"))
{
ToMenu("Options");
}
}
//Option menus
private void Options()
{
if(GUI.Button(new Rect(0, 0, 128, 32),"Graphic options"))
{
ToMenu("GraphOptions");
}
if(GUI.Button(new Rect(0, 32, 128, 32),"Audio options"))
{
ToMenu("AudioOptions");
}
}
private void GraphOptions()
{
if(GUI.Button(new Rect(0,0,128,32),"Very Low"))
{
QualitySettings.currentLevel = QualityLevel.Fastest;
}
if(GUI.Button(new Rect(0,32,128,32),"Low"))
{
QualitySettings.currentLevel = QualityLevel.Fast;
}
if(GUI.Button(new Rect(0,64,128,32),"Good"))
{
QualitySettings.currentLevel = QualityLevel.Good;
}
if(GUI.Button(new Rect(0,94,128,32),"Default"))
{
QualitySettings.currentLevel = QualityLevel.Fantastic;
}
if(GUI.Button(new Rect(0,126,128,32),"Very Good"))
{
QualitySettings.currentLevel = QualityLevel.Beautiful;
}
if(GUI.Button(new Rect(0,164,128,32),"Back"))
{
ToMenu("Main");
}
}
private void AudioOptions()
{
hSliderValue = GUI.HorizontalSlider (Rect (370, 220, 546, 30), hSliderValue, 0.0, 10.0);
}
}
Any help? Thanks in advance! :D
Could you please clarify "...but it did not work."? No sounds? Or Won't compile? Do you have a Listener in your main camera?
Answer by Sundar · Feb 25, 2014 at 12:08 PM
You need to set audio volume only once, move your audio listener volume setting inside audio option method like
//
void Update () {
//AudioListener.volume = hSliderValue/10.0;
}
private void AudioOptions()
{
hSliderValue = GUI.HorizontalSlider (Rect (370, 220, 546, 30), hSliderValue, 0.0, 10.0);
AudioListener.volume = hSliderValue/10.0;
}
Your answer
Follow this Question
Related Questions
Distribute terrain in zones 3 Answers
Multiple Cars not working 1 Answer
How to dynamically change the text in Unity(Augmented Reality + NYARtoolkit(C#)) ? 0 Answers
Trigger to play music needs to check if the same music is already playing 1 Answer
Trying to Highlight text in order to copy and paste, but do not want the text to be editable. 1 Answer