Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by JJNCreator · Jun 22, 2012 at 12:55 PM · menupausevolumeslidehorizontal-slider

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!

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
2
Best Answer

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);
     }
 }


Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image JJNCreator · Jun 22, 2012 at 02:14 PM 0
Share

works like a charm! thanks :D

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

4 People are following this question.

avatar image avatar image avatar image avatar image

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


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges