- Home /
Displaying GUI question?
Good Evening,
I am currently working with a Pause Menu GUI. This GUI shows up and stays there when I tap the Escape Key, and then disappears when I tap the Escape Key again. Is there any way to modify this script to only show the Pause Menu when the escape key is held down? I know that the "(Input.GetKeyDown("escape"))" section is what is going to have be modified, but I'm not sure how to do it... If anybody could help me out with this, I would REALLY appreciate it! Here is my pause menu script that needs to be modified:
var mainMenuSceneName : String;
var pauseMenuFont : Font;
private var pauseEnabled = false;
function Start(){
pauseEnabled = false;
Time.timeScale = 1;
AudioListener.volume = 1;
Screen.showCursor = false;
}
function Update(){
//check if pause button (escape key) is pressed
if(Input.GetKeyDown("escape")){
//check if game is already paused
if(pauseEnabled == true){
//unpause the game
pauseEnabled = false;
Time.timeScale = 1;
AudioListener.volume = 1;
Screen.showCursor = false;
}
//else if game isn't paused, then pause it
else if(pauseEnabled == false){
pauseEnabled = true;
AudioListener.volume = 0;
Time.timeScale = 0;
Screen.showCursor = true;
}
}
}
private var showGraphicsDropDown = false;
function OnGUI(){
GUI.skin.box.font = pauseMenuFont;
GUI.skin.button.font = pauseMenuFont;
if(pauseEnabled == true){
//Make a background box
GUI.Box(Rect(Screen.width /2 - 100,Screen.height /2 - 100,250,200), "He's Watching");
//Make Main Menu button
if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 - 50,250,50), "Main Menu")){
Application.LoadLevel("MainMenu");
}
//Make Change Graphics Quality button
if(GUI.Button(Rect(Screen.width /2 - 100,Screen.height /2 ,250,50), "Change Graphics Quality")){
if(showGraphicsDropDown == false){
showGraphicsDropDown = true;
}
else{
showGraphicsDropDown = false;
}
}
//Create the Graphics settings buttons, these won't show automatically, they will be called when
//the user clicks on the "Change Graphics Quality" Button, and then dissapear when they click
//on it again....
if(showGraphicsDropDown == true){
if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 ,250,50), "Fastest")){
QualitySettings.currentLevel = QualityLevel.Fastest;
}
if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 50,250,50), "Fast")){
QualitySettings.currentLevel = QualityLevel.Fast;
}
if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 100,250,50), "Simple")){
QualitySettings.currentLevel = QualityLevel.Simple;
}
if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 150,250,50), "Good")){
QualitySettings.currentLevel = QualityLevel.Good;
}
if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 200,250,50), "Beautiful")){
QualitySettings.currentLevel = QualityLevel.Beautiful;
}
if(GUI.Button(Rect(Screen.width /2 + 150,Screen.height /2 + 250,250,50), "Fantastic")){
QualitySettings.currentLevel = QualityLevel.Fantastic;
}
if(Input.GetKeyDown("escape")){
showGraphicsDropDown = false;
}
}
//Make quit game button
if (GUI.Button (Rect (Screen.width /2 - 100,Screen.height /2 + 50,250,50), "Run Away")){
Application.Quit();
}
}
}
Answer by Tomer-Barkan · Nov 19, 2013 at 06:53 AM
You can change your update code to pause when escape is pressed with Input.GetKeyDown()
and unpause when escape is released with Input.GetKeyUp()
:
function Update(){
//if escape is pressed, pause
if(Input.GetKeyDown(KeyCode.Escape)){
pauseEnabled = true;
AudioListener.volume = 0;
Time.timeScale = 0;
Screen.showCursor = true;
}
// if escape is released, unpause
if(Input.GetKeyUp(KeyCode.Escape)) {
pauseEnabled = false;
Time.timeScale = 1;
AudioListener.volume = 1;
Screen.showCursor = false;
}
}
Your answer
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Setting Scroll View Width GUILayout 1 Answer
Create big city for car game? 2 Answers
Tracking Down GUI Errors 0 Answers
Level select design approaches. 0 Answers