High score refuses to save

I have tried to use a basic high score script, but it does not save…at all…
Everytime I restart a round and die, the high score remains at 0…

In this script, I reference another script Health.kills

	int highScore = 0;
	bool newHighScore;

	// Use this for initialization
void Awake(){
	Health.kills = 0;
	Time.timeScale = 0.0f;
}
		void Start ()
	{

				Health.kills = PlayerPrefs.GetInt ("Score");		
		
				if (!PlayerPrefs.HasKey ("HighScore")) {
						PlayerPrefs.SetInt ("HighScore", Health.kills);
						newHighScore = true;
						highScore = Health.kills;
				} else {
						highScore = PlayerPrefs.GetInt ("HighScore");
						if (Health.kills > highScore) {
								newHighScore = true;
								PlayerPrefs.SetInt ("HighScore", Health.kills);
								highScore = Health.kills;
						} else
								newHighScore = false;
				}
		}
		void Update () {
	{
		if (PlayerLives.lives <= 0) {
						Time.timeScale = 0.0f;
						guiText.fontSize = Screen.width / 10;
						guiText.fontSize = Screen.height / 10;
						guiText.text = "High Score: " + PlayerPrefs.GetInt ("HighScore"); // update the GUIText
				}
		else {
			Time.timeScale = 1.0f;
		}
	}
	}
}

From what I could see you need to put this in a seperate function and call it once your round has ended :

if (Health.kills > highScore) {
    PlayerPrefs.SetInt ("HighScore", Health.kills);
    highScore = Health.kills;
}

Your Update should pick this up after and update your display correctly.

In Start you should have :

void Start() {

    if (!PlayerPrefs.HasKey ("HighScore")) {
        PlayerPrefs.SetInt ("HighScore", 0);
        highScore = 0;
        
    } else {
        highScore = PlayerPrefs.GetInt ("HighScore");
    }
}

I’ve taken out the new high score bool, it was not doing anything in the code you posted and I don’t think you will need it this way.