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:

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 :slight_smile:

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