- Home /
Simple GUI Problem...
I'm trying to access a boolean from another script, then if that boolean equates to true, display this button. However, I've had some difficulty with this, as I keep receiving the error "The name 'playerscript' does not exist in the current context". I'm not too sure about how to access booleans from other scripts either. Here's my script:
using UnityEngine;
using System.Collections;
public class MyGUI : MonoBehaviour {
public GUISkin MyGUISkin;
public GameObject Playergameobject;
public bool check=false;
// Use this for initialization
void Start () {
Player playerscript = Playergameobject.GetComponent<Player> ();
}
// Update is called once per frame
void Update () {
if (playerscript.finish) {
check = true;
}
}
void OnGUI(){
GUI.skin = MyGUISkin;
if (check) {
GUI.Button (new Rect (Screen.width / 2 - 100, Screen.height / 2 + 10, 150, 20), "Next Level");
}
}
}
Try declaring playerscript first.
private Player playerscript;
void Start() {
if (Playergameobject != null && Playergameobject.GetComponent<Player>() != null)
playerscript = Playergameobject.GetComponent<Player> ();
}
$$anonymous$$ake sure you actually set the Playergameobject in the editor.
Answer by allenallenallen · Jan 03, 2016 at 02:00 PM
You have to declare the variable playerscript outside of the Start() or else it'll only exist in Start(). Then you can set it to whatever you need in Start().
public Player playerscript;
void Start () {
playerscript = Playergameobject.GetComponent<Player> ();
}
Answer by phil_me_up · Jan 03, 2016 at 01:59 PM
You define playerscript in your Start() function, so it's only known within the scope of that function. Once that function completes, playerscript is no longer valid so checking for it in Update() will give an error.
Simple answer:
public class MyGUI : MonoBehaviour {
public GUISkin MyGUISkin;
public GameObject Playergameobject;
public bool check=false;
Player playerscript = null;
// Use this for initialization
void Start () {
playerscript = Playergameobject.GetComponent<Player> ();
}
Answer by AlanGreyjoy · Jan 03, 2016 at 02:31 PM
The difference between a local and a global variable makes all the difference.
Your answer
Follow this Question
Related Questions
Pass bool value from multiple objects to one file to check their values? 1 Answer
Appearence of the GUI element after a certain action 1 Answer
Simple Drop down list 1 Answer
Animation gets stuck in the last frame for 2 secs. 1 Answer
How to convert new unity input system input actions to booleans 1 Answer