- Home /
How to set high score (best time) with playerprefs
Hello!
I have never used playerprefs before, so if I am doing something very wrong, please let me know!
Question: How do I store and show the current best time in the top-right corner of my GUI?
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Trigger : MonoBehaviour
{
public bool finished = false;
public Texture winningimage;
public Text timer;
public Text bTime;
public float raceTime = 0;
private float bestTime = 0;
void Start ()
{
}
void OnTriggerEnter ()
{
Debug.Log ("Finish!");
finished = true;
}
void OnGUI ()
{
if (finished) {
GUI.Label (new Rect (Screen.width / 2 - 175, Screen.height / 4 - 55, 374, 110), winningimage);
if (raceTime < bestTime) {
bestTime = raceTime;
PlayerPrefs.SetFloat ("Best time", bestTime);
}
}
if (GUI.Button (new Rect (1250, 10, 80, 40), "Restart")) {
Application.LoadLevel ("Test level 1");
}
}
void Update ()
{
if (!finished) {
raceTime = raceTime + 1 * Time.deltaTime;
timer.text = raceTime.ToString ("f2");
}
}
}
Answer by HYPERSAVV · Dec 18, 2014 at 01:52 AM
With PlayerPrefs, you get and set values. I see that you set the value when the race is finished. When you start the race, call PlayerPrefs.GetFloat("Best time") to get the value stored there.
void Start()
{
if(PlayerPrefs.HasKey("Best time"))
{
float bestTime = PlayerPrefs.GetFloat("Best time");
}
else
{
PlayerPrefs.SetFloat("Best time", someStupidHighNumber);
}
}
Thank you for your answer, but I can't get the best time to show.
I now get an error: NullReferenceException: Object reference not set to an instance of an object Trigger.Update () (at Assets/Scripts/Trigger.cs:52)
$$anonymous$$y void Start() is now copied from your answer and my void Update():
void Update ()
{
if (!finished) {
raceTime = raceTime + 1 * Time.deltaTime;
timer.text = raceTime.ToString ("f2");
bTime.text = bestTime.ToString();
}
}
Your answer
Follow this Question
Related Questions
Highscore GUI not working properly help 0 Answers
C# How To Save PlayerPrefs for Unity GUI 2 Answers
Distribute terrain in zones 3 Answers
Star graphic after finishing a level 0 Answers
Multiple Cars not working 1 Answer