Score system not working
I am wanting to pick up a prefab, "Gem", and for the system to add 10 points. I have the scoreText visible on screen, but it doesn't add 10.
Here is the code: using UnityEngine; using System.Collections; using UnityEngine.UI;
public class RandomSpawn : MonoBehaviour {
public GameObject Gem;
private int count;
public Text countText;
void Start()
{
count = 0;
SetCountText ();
}
void SpawnGem()
{
Vector3 RandomSpawn = new Vector3 (Random.Range (-8.87F, 8.87F), Random.Range (-3.87F, 3.97F),1F);
Instantiate (Gem, RandomSpawn, Quaternion.identity);
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag ("Player"))
{
SpawnGem ();
Destroy (Gem);
count = count + 1;
SetCountText ();
}
}
void SetCountText()
{
countText.text = "Count: " + count.ToString ();
}
}
Answer by Salmjak · Mar 13, 2016 at 10:05 AM
As I've said in your original thread. You delete the gameobject (because you earlier said that this script is attached to the gem itself) thus the class is destroyed and int count is destroyed with it. Move your count variable to the player or make it static public static int count
.
What does static mean? Here are the docs. Static means that the variable does not belong to a particular instance of the class, but rather the class itself. So a variable marked as static is shared between all instances of the class.
If you choose to make it static you should remove the "count = 0" in Start() (or else it will become 0 every time you spawn a new gem).
EDIT: Also, for 10 points you shouldn't use count = count + 1;
you should use count = count + 10;
. You should also call this: count = count + 10; SetCountText ();
before Destroy(gem);
.
Your answer
Follow this Question
Related Questions
Scoring system not working? 1 Answer
Adding Text to Prefab 0 Answers
Why does my text doesn't stay on screen? 1 Answer
Help! with the Message text 0 Answers