Why does Bool code never work in my C# Script?
In my game I was able to write code using solely parameters to connect the player's animations to when the player would move/jump, etc. When I tried it using bool, it just would not work. After asking for help from an experienced Unity user, he created a script that worked on both his and his friend's computer. Mine still wouldn't work.
Skip to today when I tried to make a pause menu for my game. It requires Bool coding and I followed the tutorial right to the dot here but again, my computer and Unity hated it and spat out errors:
https://www.youtube.com/watch?v=dvyiQLkaMcg
Here is a copy of the script:
using UnityEngine; using UnityEngine.UI; using System.Collections;
public class UIManager : MonoBehaviour {
public class GameObject PauseMenu;
public bool isPaused;
public object PauseMenu { get; private set; }
// Use this for initialization
void Start() {
isPaused = false;
}
// Update is called once per frame
void Update() {
if (isPaused) {
PauseGame (true);
} else {
PauseGame (false);
}
if (Input.GetButtonDown ("Cancel")) {
SwitchPause();
}
}
void PauseGame(bool state) {
if (state) {
Time.timeScale = 0.0f; //This pauses the Game
} else {
Time.timeScale = 1.0f; //This unpauses the Game
}
PauseMenu.SetActive(state);
}
public void SwitchPause() {
if (isPaused) {
isPaused = false; //Changes the value
} else {
isPaused = true;
}
}
}
I've tried updating Unity to the latest release, I've upgraded from Windows 8.1 to Windows 10, I've tried reinstalling Unity and still my computer and Unity seem to hate bools with a passion. If there's a way for me to write this code using parameters or if you know how to fix this bool issue, please let me know, I would greatly appreciate it :)
I refuse to believe that booleans wouldn't work on a certain installation or hardware :)
If the code "spat out errors", it's more likely that because of those errors you never even get to the part of code that checks the Boolean or sets its value.
Answer by felixpk · Jul 23, 2016 at 02:09 PM
I don't think that this code is from an experienced Unity user, at least not an experienced coder. From what I can see you just try to make a pause toggle? Then the code would look something like this:
using UnityEngine;
using System.Collections;
public class UIManager: MonoBehaviour {
public GameObject pauseMenu;
private bool isPaused = false;
void Update() {
if(Input.GetButtonDown("Cancel")) { // GetButtonDown just gets called once!!
Pause();
}
}
void Pause() {
isPaused = !isPaused; //if isPaused then isPaused = false and vice versa
if(isPaused) {
Time.timeScale = 0;
} else {
Time.timeScale = 1;
}
pauseMenu.SetActive(isPaused);
}
}
Felix
Actually I found that this tutorial helped me make a pause menu: https://www.sitepoint.com/adding-pause-main-menu-and-game-over-screens-in-unity/
Still thank you for your help :)
Your answer
Follow this Question
Related Questions
How to change the Bool for only a single prefab GameObject creating with Instantiate? 2 Answers
Call a function When a bool changes value? 2 Answers
Static bool 1 Answer
Referenced Bool is not updating 1 Answer
Animation won't stop (Solved) 2 Answers