- Home /
Strange error with UI Screen overlay - no bugs or warning, game can't be played. - GameOverText.SetActive (false);
Hello, I was hoping somebody could help with this strange issue. After following a YouTube video and adding my spin to it I keep running into an issue.
Through part of the process of elimination I have wheedled the problem script down to the following line of codes.
GameOverText.SetActive (false);
ButtonRestart.SetActive (false);
These are linked to the UI's in the Scene.
full code...
using UnityEngine;
using System.Collections;
//Adding this allows us to access members of the UI namespace including Text.
using UnityEngine.UI;
public class CompletePlayerController : MonoBehaviour {
public float speed; //Floating point variable to store the player's movement speed.
public Text countText; //Store a reference to the UI Text component which will display the number of pickups collected.
public Text winText; //Store a reference to the UI Text component which will display the 'You win' message.
public GameObject GameOverText, ButtonRestart, blood;
private Rigidbody2D rb2d; //Store a reference to the Rigidbody2D component required to use 2D Physics.
private int count; //Integer to store the number of pickups collected so far.
// Use this for initialization
void Start()
{
//Get and store a reference to the Rigidbody2D component so that we can access it.
rb2d = GetComponent<Rigidbody2D> ();
//Initialize count to zero.
count = 0;
//Initialze winText to a blank string since we haven't won yet at beginning.
winText.text = "";
//Call our SetCountText function which will update the text with the current value for count.
SetCountText ();
// Game over text is off on start, button restart is off, player blood is off.
GameOverText.SetActive (false);
ButtonRestart.SetActive (false);
//blood.SetActive (false);
}
//FixedUpdate is called at a fixed interval and is independent of frame rate. Put physics code here.
void FixedUpdate()
{
//Store the current horizontal input in the float moveHorizontal.
float moveHorizontal = Input.GetAxis ("Horizontal");
//Store the current vertical input in the float moveVertical.
float moveVertical = Input.GetAxis ("Vertical");
//Use the two store floats to create a new Vector2 variable movement.
Vector2 movement = new Vector2 (moveHorizontal, moveVertical);
//Call the AddForce function of our Rigidbody2D rb2d supplying movement multiplied by speed to move our player.
rb2d.AddForce (movement * speed);
}
//OnTriggerEnter2D is called whenever this object overlaps with a trigger collider.
void OnTriggerEnter2D(Collider2D other)
{
//Check the provided Collider2D parameter other to see if it is tagged "PickUp", if it is...
if (other.gameObject.CompareTag ("PickUp"))
{
//... then set the other object we just collided with to inactive.
other.gameObject.SetActive(false);
//Add one to the current value of our count variable.
count = count + 1;
//Update the currently displayed count by calling the SetCountText function.
SetCountText ();
}
}
// Enemy Hurts the Player and trigger the reset button
void OnCollisionEnter2D (Collision2D col)
{
if (col.gameObject.CompareTag ("Enemy"))
//if (col.gameObject.tag.Equals ("Enemy"))
{
GameOverText.SetActive (true);
ButtonRestart.SetActive (true);
//gameObject.SetActive (false);
}
}
//This function updates the text displaying the number of objects we've collected and displays our victory message if we've collected all of them.
void SetCountText()
{
//Set the text property of our our countText object to "Count: " followed by the number stored in our count variable.
countText.text = "Count: " + count.ToString ();
//Check if we've collected all 12 pickups. If we have...
if (count >= 12)
//... then set the text property of our winText object to "You win!"
winText.text = "Find The Portal";
}
}
If anyone know's where I could be going wrong and point out the issue that would be great .
Comment