How to set the best time and save it?

Hi you all!

I’ve got a big problem and I’m looking for a solution for a long time but I haven’t found it yet.
So my problem is how to set the best time and then I want it to be saved.
First: my timer doesn’t want to stop… I want it to stop when I reach score 20. Then my best time doesn’t appears and ofcourse it doesn’t save. I know that because I have this script.

function NextLevel(){
  yield WaitForSeconds (2);
  var i = Application.loadedLevel ;
        Application.LoadLevel(i + 1); 
 } 

So this is my script for my timer and for my best time.

static var currentScore : int = 0 ;
private var timer : float = 0f ;
private var bestTime : float = 0f;
var IncreaseTime : boolean = true; 

function Start()
{
   bestTime = PlayerPrefs.GetFloat("BestTime", timer) ;
}
 
function Update()
{
   if(IncreaseTime == true)
   {
   timer += Time.deltaTime;
   }
   
   if(currentScore == 20)
   {
   IncreaseTime = false;
   
   }
   
}
 
function SetTimers()
{
    if(currentScore == 20)
   {
   IncreaseTime = false;
         if(timer < bestTime)
{
   PlayerPrefs.SetFloat("BestTime", timer) ;
   bestTime = timer ;   
}
   }
   }

 
 
function OnGUI()
{
   GUILayout.Box("" + timer) ;
 
   GUILayout.Box("" + bestTime) ;
}

I heard that GUI Box is not the best way to save your best time but I tried with GUI Text and it was something like that float doesn’t work with GUI Text or something like this…

I’m kinda noob so please understand…

Thank you for your help.

PS: I use javascript.

I think your main problem is, that you aren’t calling SetTimers anywhere.
Also your NextLevel() might be uncallable. Is this the complete code?

Try something like this (untested and maybe there are typos in it):
function Update()
{
if(IncreaseTime == true)
{
timer += Time.deltaTime;
}

   if(currentScore >= 20)
   {
        IncreaseTime = false;
        if (timer < bestTime)
        {
             PlayerPrefs.SetFloat("BestTime", timer);
             PlayerPrefs.Save();
             bestTime = timer;
        }
   }
 
}

This should work but becaus I don’t know your other scripts I cannot promise anything.

Good luck!

EDIT: Oh and it’s not a problem to use PlayerPrefs simultaneous or more than one time. But I won’t use it every frame.