Help With Setting High Score Float C#

I’ve tried a number of different things and I can’t figure this one out either. Now I’m just confusing myself and doing more harm than good, and I was hoping someone else could lend a hand. I figured out how to save total time in this thread, http://forum.unity3d.com/threads/241060-Help-With-Saving-Time-Score-in-Player-Prefs-c , but now I’d like to save the Best / Highest Time as a high score and I can’t seem to figure it out. Can someone point me in the right direction using c#, I’ve tried a number of things that I found in threads here and I know I’m doing something wrong.

Here is my code:

using UnityEngine;
using System.Collections;

public class DistanceCS : MonoBehaviour {
	
	public float runTime; ;
	public float bestTime;

	void Start() {
				PlayerPrefs.GetFloat ("runTime", runTime);
				PlayerPrefs.GetFloat ("bestTime", bestTime);
				if (PlayerPrefs.GetFloat ("runTime") > bestTime) {
						bestTime = runTime;
				} else
				bestTime = bestTime;
		}
	
	void OnDestroy() { // Set when my player dies


		PlayerPrefs.SetFloat ("runTime", Time.timeSinceLevelLoad);
		PlayerPrefs.SetFloat ("bestTime", bestTime);
		
		//var savedTime = PlayerPrefs.GetFloat ("runTime");
	//PlayerPrefs.SetFloat ("runTime", savedTime + Time.timeSinceLevelLoad);
	//Debug.Log (PlayerPrefs.GetFloat ("runTime"));
       // ^ I had used these before to save the total time
	}
	
	void OnGUI () {
		guiText.text = "Time: " + Time.timeSinceLevelLoad.ToString ("F2") + "\nBest Time: " + PlayerPrefs.GetFloat ("bestTime");
	}
}

The second parameter of the get-function takes an default-value for non-existent/non-initialized values. It’s not going to return the entry’s value into the variable you put there.

In order to assign your values to your variables runTime and bestTime, use the return value the function offers.

void Start() 
{
                runTime = PlayerPrefs.GetFloat ("runTime");
                bestTime = PlayerPrefs.GetFloat ("bestTime");
                // now you can alsp use the variables instead of calling the get function again
                // as for your way you implement it, the runTime seems to be the last runTime which was saved, 
                // that means your bestTime will only be updated when this scene will be started once again (if the last runTimeis greater than the bestTime)
                // try to place the comparison (of the latest runTime (Time.timeSinceLevelLoad) with the bestTime) in the OnDestroy function
                // so the runTime of your current run, which has just ended, will be compared to the bestTime and can be saved as new bestTime

                if (runTime > bestTime)  
                        bestTime = runTime;
                else // this is actually doing nothing, you can remove the else and it's code
                        bestTime = bestTime;
        }

Hey thanks a lot Suddoha, I appreciate your commented out help on this. I try cramming too much work/ study at once and you guys are big help.