How to save highscores

I am trying to make a system that will save your highscore but It does not seem to work. To do this I am trying to use variables in 2 different scripts. The problem is that my float “previous” is constantly setting it self to my float count and I only want it to set it once.

first script:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class MainScript : MonoBehaviour {

	public Text CountText;
	public static int count;
	public GameObject pipeObject;
	public GameObject birdObject;
	public float pipeHole;
	public static float previous;

	// Use this for initialization
	void Awake(){
		previous = count;
	}

	void Start () {
		PlayerPrefs.DeleteAll ();
		count = PlayerPrefs.GetInt ("High Score", 0);
		SetCountText ();
		Instantiate (birdObject);
		InvokeRepeating ("CreateObstacle", 0f, 1.5f);
	}

	void CreateObstacle(){
		float randomPos = 4f - (4f - 0.8f - pipeHole) * Random.value;
		GameObject upperPipe = Instantiate (pipeObject);
		upperPipe.transform.position = new Vector2 (4f, randomPos);
		GameObject lowerPipe = Instantiate (pipeObject);
		lowerPipe.transform.position = new Vector2 (4f, randomPos - pipeHole - 4.8f);
	}
	
	// Update is called once per frame
	void Update () {
		if (Input.GetButtonDown ("Fire1")) {
			count = count + 1;
			PlayerPrefs.SetInt ("High Score", MainScript.count);
			SetCountText ();
			print (count);
		}
	}
	void SetCountText(){
		CountText.text = "Flaps: " + MainScript.count.ToString ();
	}
}

second script:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.SceneManagement;

public class LevelManager : MonoBehaviour {

public Text score;
public Text highScore;

public void LoadLevel (string name){
	SceneManager.LoadScene (name);
}
// Use this for initialization
void Start () {
score.text = "Score:" + PlayerPrefs.GetInt ("High Score").ToString ();
	if(PlayerPrefs.GetInt("High Score") >= MainScript.previous){
		highScore.text = "highScore:" + PlayerPrefs.GetInt ("High Score").ToString ();
	}
}

// Update is called once per frame
void Update () {

}

}

I managed to figure it out here is what I did
I added a new public static int to my first script that only set itself to count when count was greater than itself. I also deleted my public static int called previous and removed it from all my code.
public class MainScript : MonoBehaviour {

	public Text CountText;
	public static int count;
	public GameObject pipeObject;
	public GameObject birdObject;
	public float pipeHole;
	public static int previousCount;

	// Use this for initialization
	void Awake(){
		
	}

	void Start () {
		count = 0;
		//count = PlayerPrefs.GetInt ("High Score", 0);
		SetCountText ();
		Instantiate (birdObject);
		InvokeRepeating ("CreateObstacle", 0f, 1.5f);
	}

	void CreateObstacle(){
		float randomPos = 4f - (4f - 0.8f - pipeHole) * Random.value;
		GameObject upperPipe = Instantiate (pipeObject);
		upperPipe.transform.position = new Vector2 (4f, randomPos);
		GameObject lowerPipe = Instantiate (pipeObject);
		lowerPipe.transform.position = new Vector2 (4f, randomPos - pipeHole - 4.8f);
	}
	
	// Update is called once per frame
	void Update () {
		if (Input.GetButtonDown ("Fire1")) {
			count = count + 1;
			PlayerPrefs.SetInt ("High Score", MainScript.count);
			SetCountText ();
			print (count);
		}
		if (count > previousCount) {
			previousCount = count;
		}
	}
	void SetCountText(){
		CountText.text = "Flaps: " + MainScript.count.ToString ();
	}
}

I would also like to note that I noted out 2 second line it the start function because it is a useless line of code and it is very important to delete it.

here is what I edited in my second page of code:

public class LevelManager : MonoBehaviour {

	public Text score;
	public Text highScore;

	public void LoadLevel (string name){
		SceneManager.LoadScene (name);
	}
	// Use this for initialization
	void Start () {
		MainScript.count = 0;
		score.text = "Score:" + PlayerPrefs.GetInt ("High Score").ToString ();
		if(PlayerPrefs.GetInt("High Score") >= MainScript.count){
			highScore.text = "highScore:" + MainScript.previousCount;
		}
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

here I replaced values in the start function