- Home /
Transferring float from one UI to another?
So whenever a problem persists longer than an hour despite my best efforts of searching, I come to you guys. Here's my latest issue:
The player character is kept from level to level, as well as the UI to keep relevant information (current score, remaining lives). These objects exist under one empty game object called GameObject. A bad name, I know. When the player dies enough times to warrant a game over, the GameObject, and by extension, the UI and player, are destroyed so they don't clutter the game over screen. The score is a float, and I want to transfer the contents of this float into another text object for the game over screen, something along the lines of "Your score was" score. How would I transfer this number from the top-left score counter, and put it into a front and center text object for the game over screen before the original score object is destroyed? I tried a few things myself. I tried making a script where the variable had the same name as the variable on the other UI, but that didn't work. I tried creating an empty game object that would persist throughout the game and game over screen, and connect the two UIs by linking them to the empty game object, but I couldn't get it to work. Research said things about GetComponent, but it always gave me an error.
Here's the relevant code. It is affixed to the player character.
public Text countText;
public Text scoreText;
public int Lives;
public Timer timer;
public Canvas canvas;
public GameObject GameObject;
private Transform player;
private Rigidbody rb;
private int count;
private float score;
void Start()
{
{
rb = GetComponent<Rigidbody>();
count = 0;
SetCountText();
score = 0;
SetScoreText();
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Pick Up"))
{
other.gameObject.SetActive(false);
count = count + 1;
SetCountText();
score = score + 3;
SetScoreText();
} //"Picking up" a doodad adds one to Doodads, 3 to Score.
if (other.gameObject.CompareTag("Finish"))
{
score = score + (Mathf.Round(timer.timeLeft));
SetScoreText();
transform.position = new Vector3(0, 2, 0);
rb.velocity = new Vector3(0, 0, 0);
timer.timeLeft = 60f;
} //What happens to the ball when the player touches the goal.
if (other.gameObject.CompareTag("Death"))
{
Lives = Lives - 1;
SetCountText();
transform.position = new Vector3(0, 1, 0);
rb.velocity = new Vector3(0, 0, 0);
timer.timeLeft = 60f;
} //What happens when a player falls off.
void SetCountText ()
{
countText.text = "Doodads: " + count.ToString() + " Lives: " + Lives.ToString();
if (count >= 100)
{
Lives = Lives + 1;
SetCountText();
count = 0;
SetCountText();
}
if (Lives <= -1)
{
SceneManager.LoadScene("GameOver");
GameObject.DestroyObject(GameObject.gameObject);
}
}
void SetScoreText ()
{
scoreText.text = "Score: " + score.ToString();
}
}
What coding would have to be done to get the private float score onto a new UI text before it is destroyed?
Your answer
Follow this Question
Related Questions
How do I make to print something in console on Unity 5.3 1 Answer
Collision Destroy Help? 1 Answer
Only destroy one instatnce 1 Answer
Play Animation several times 0 Answers
Endless Staircase 1 Answer