How do I improve the way I am saving high scores?

I currently am making a game with three difficulties. For each of these difficulties I have separate high scores and text boxes for them. This is my current code pertaining to the high scores:

public class GameManager : MonoBehaviour
{
   private int score;
   private int currentDif;
   private int easyHighScore;
   private int medHighScore;
   private int hardHighScore;
   public TextMeshProUGUI easyHighScoreText;
   public TextMeshProUGUI medHighScoreText;
   public TextMeshProUGUI hardHighScoreText;

   void Start()
   {
       easyHighScore = Scores.easyHighScore;
       medHighScore = Scores.medHighScore;
       hardHighScore = Scores.hardHighScore;
       easyHighScoreText.text = ("Easy High Score: " + easyHighScore);
       medHighScoreText.text = ("Medium High Score: " + medHighScore);
       hardHighScoreText.text = ("Hard High Score: " + hardHighScore);
   }

   private void CheckScore(int difficulty, int tempScore)
   {
       if(difficulty == 1)
       {
           if(tempScore > easyHighScore)
           {
               Scores.easyHighScore = tempScore;
           }
       } else if(difficulty == 2)
       {
           if(tempScore > medHighScore)
           {
               Scores.medHighScore = tempScore;
           }
       }
       else
       {
           if(tempScore > hardHighScore)
           {
               Scores.hardHighScore = tempScore;
           }
       }
   }

   public void GameOver()
   {
       gameOverText.gameObject.SetActive(true);
       restartButton.gameObject.SetActive(true);
       isGameActive = false;
       CheckScore(currentDif, score);
   }

}

and

public static class Scores
{
    static public int easyHighScore;
    static public int medHighScore;
    static public int hardHighScore;
}

It works for what I want which to temporarily save high scores in a webGL session, but I feel like I am coding this very inefficiently and would like to know if there is a better way to code this for the future. When I restart the game after game over I reload the scene which is why the high scores are static.

if you’re looking for a more scalable and organized way to manage high scores, you could consider using PlayerPrefs in Unity, which is designed for storing and retrieving player preferences like high scores

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class GameManager : MonoBehaviour
{
    private int score;
    private int currentDif;
    public TextMeshProUGUI easyHighScoreText;
    public TextMeshProUGUI medHighScoreText;
    public TextMeshProUGUI hardHighScoreText;

    private const string EasyHighScoreKey = "EasyHighScore";
    private const string MedHighScoreKey = "MedHighScore";
    private const string HardHighScoreKey = "HardHighScore";

    void Start()
    {
        // Load high scores from PlayerPrefs
        easyHighScore = PlayerPrefs.GetInt(EasyHighScoreKey, 0);
        medHighScore = PlayerPrefs.GetInt(MedHighScoreKey, 0);
        hardHighScore = PlayerPrefs.GetInt(HardHighScoreKey, 0);

        // Update the high score text fields
        easyHighScoreText.text = ("Easy High Score: " + easyHighScore);
        medHighScoreText.text = ("Medium High Score: " + medHighScore);
        hardHighScoreText.text = ("Hard High Score: " + hardHighScore);
    }

    private void CheckScore(int difficulty, int tempScore)
    {
        int currentHighScore = 0;
        string highScoreKey = "";

        // Determine which high score to check based on difficulty
        if (difficulty == 1)
        {
            currentHighScore = easyHighScore;
            highScoreKey = EasyHighScoreKey;
        }
        else if (difficulty == 2)
        {
            currentHighScore = medHighScore;
            highScoreKey = MedHighScoreKey;
        }
        else
        {
            currentHighScore = hardHighScore;
            highScoreKey = HardHighScoreKey;
        }

        // Update high score if necessary
        if (tempScore > currentHighScore)
        {
            currentHighScore = tempScore;
            PlayerPrefs.SetInt(highScoreKey, currentHighScore);
        }
    }

    public void GameOver()
    {
        // ... your existing code ...

        // Save high scores
        CheckScore(currentDif, score);
    }
}
public class GameManager : MonoBehaviour
{
   int _score;
   public TextMeshProUGUI easyHighScoreText;
   public TextMeshProUGUI medHighScoreText;
   public TextMeshProUGUI hardHighScoreText;
   [SerializeField] EDifficulty _gameDifficulty = EDifficulty.Medium;

   void Start ()
   {
       UpdateHighScoreLabels();
   }

    void UpdateHighScoreLabels ()
    {
       easyHighScoreText.text = $"Easy High Score: {HighScore.Easy}";
       medHighScoreText.text = $"Medium High Score: {HighScore.Medium}";
       hardHighScoreText.text = $"Hard High Score: {HighScore.Hard}";
    }

    public void GameOver ()
   {
       gameOverText.gameObject.SetActive(true);
       restartButton.gameObject.SetActive(true);
       isGameActive = false;
       
       int highScoreResult = HighScore.Submit( _score , _gameDifficulty );
       if( highScoreResult>0 )
       {
            UpdateHighScoreLabels ()
            Debug.Log($"I made it into the high score! :D");        
       }
       else if( highScoreResult<0 ) Debug.Log($"I did not made it into the high score Y_Y");
       else Debug.Log($"Tie! So close :V");
   }

}
public enum EDifficulty : byte { undefined=0 , Easy=1 , Medium=2 , Hard=3 }
public static class HighScore
{
    const string key_easy = "g8h32gh92-3]0g9021ogj-w2p9-0gsher";
    const string key_medium = "j534-a4hejnsmr5-4j5e3jw4egas-wgwh";
    const string key_hard = "mwrhe32-herhgwegbthw-gw4hje3wegh";

    static public int Easy { get => PlayerPrefs.GetInt(key_easy,0); private set => PlayerPrefs.SetInt(key_easy,value); }
    static public int Medium { get => PlayerPrefs.GetInt(key_medium,0); private set => PlayerPrefs.SetInt(key_medium,value); }
    static public int Hard { get => PlayerPrefs.GetInt(key_hard,0); private set => PlayerPrefs.SetInt(key_hard,value); }

    /// <returns>
    /// Greater than zero - submitted score was greater than the current high score, becoming the new high score (!).
    /// Zero - submitted score was equal with the current high score.
    /// Less than zero - submitted score was less than the current high score.
    /// </returns>
    public static int Submit ( int score , EDifficulty difficulty )
    {
        if( difficulty==EDifficulty.Easy )
        {
            int comparison = score.CompareTo(Easy);
            if( comparison>0 ) Easy = score;
            return comparison;
        }
        else if( difficulty==EDifficulty.Medium )
        {
            int comparison = score.CompareTo(Medium);
            if( comparison>0 ) Medium = score;
            return comparison;
        }
        else if( difficulty==EDifficulty.Hard )
        {
            int comparison = score.CompareTo(Hard);
            if( comparison>0 ) Hard = score;
            return comparison;
        }
        else throw new System.ArgumentOutOfRangeException($"value of {nameof(difficulty)} is out of range: {difficulty}");
    }

}