public void LoadUserSettings()
 {
     //first we check to see if a settings file exists and if not then we manually,
     //set all the settings class values and run the save settings function to create a file.
     if (!File.Exists(Application.persistentDataPath + "/userSettings.json"))
     {
         settings.qualityLevel  = 3;
         settings.fullscreen    = true;
         settings.textureQual   = QualitySettings.masterTextureLimit;
         settings.musicVolume   = 0.5f;
         settings.antialiasing  = QualitySettings.antiAliasing;
         settings.vSync         = QualitySettings.vSyncCount;
         settings.resolutionInd = resolutions.Length;
         settings.FOV           = 45;
         SaveUserSettings();
     }
     //once that is done we load the values from the json file and update all the options values.
     settings              = JsonUtility.FromJson <sSettingsClass>(File.ReadAllText(Application.persistentDataPath + "/userSettings.json"));
     volumeSlider.value    = settings.musicVolume;
     aaDropdown.value      = settings.antialiasing;
     vSyncDropdown.value   = settings.vSync;
     textureDropdown.value = settings.textureQual;
     resDropdown.value     = settings.resolutionInd;
     fovSlider.value       = settings.FOV;
     fovPercent.text       = fovSlider.value.ToString();
     gameQuality.value     = settings.qualityLevel;
     Screen.fullScreen     = fullScreenToggle.isOn = settings.fullscreen;
     QualitySettings.SetQualityLevel(settings.qualityLevel);
     resDropdown.RefreshShownValue();
     gameQuality.RefreshShownValue();
 }
    private void OnEnable()
    {
        //Createing a reference to the settings class.
        settings = new sSettingsClass();
        //Setting up the onValueChanged events.
        fullScreenToggle.onValueChanged.AddListener(delegate { OnToggleFullscreen(); });
        advancedToggle.onValueChanged.AddListener(delegate { OnAdvancedToggle(); });
        resDropdown.onValueChanged.AddListener(delegate { OnChangeResolution(); });
        gameQuality.onValueChanged.AddListener(delegate { OnChangeGameQuality(); });
        textureDropdown.onValueChanged.AddListener(delegate { OnChangeTexture(); });
        aaDropdown.onValueChanged.AddListener(delegate { OnChangeAntialiasing(); });
        vSyncDropdown.onValueChanged.AddListener(delegate { OnChangeVSync(); });
        volumeSlider.onValueChanged.AddListener(delegate { OnChangeVolume(); });
        fovSlider.onValueChanged.AddListener(delegate { OnChangeFOV(); });
        //Setting up the onClick events.
        btnApplySettings.onClick.AddListener(delegate { SaveUserSettings(); });
        btnResume.onClick.AddListener(delegate { ResumeGame(); });
        btnRestart.onClick.AddListener(delegate { RestartGame(); });
        btnOptions.onClick.AddListener(delegate { Options(); });
        btnEgOptions.onClick.AddListener(delegate { EgOptions(); });
        btnReturnToMM.onClick.AddListener(delegate { ReturnToMM(); });
        btnEgReturnToMM.onClick.AddListener(delegate { EgReturnToMM(); });
        //Make sure that the advanced options are not on.
        advancedToggle.isOn = false;
        //create a reference to the resolutions array.
        resolutions = Screen.resolutions;

        foreach (Resolution resolution in resolutions)
        {
            //add each resolution to the dropdown box.
            resDropdown.options.Add(new Dropdown.OptionData(resolution.ToString()));
        }

        for (int i = 0; i < QualitySettings.names.Length; i++)
        {
            //add each quality level to the game quality dropdown box.
            gameQuality.options.Add(new Dropdown.OptionData(QualitySettings.names[i].ToString()));
        }
        //finally we need to load the users settings.
        LoadUserSettings();
    }