C# GUI Horizontal Slider causes Quality Options to Reset to Zero

Hi everyone, for some reason my GUI horizontal sliders causes the quality option its tied to reset to zero and the overall quality horizontal slider doesn’t change anything other then itself. How would I give the Overall Quality horizontal slider full control of changing the antialiasing horizontal slider?

    	GUILayout.Label("Overall Quality");
    	GUILayout.BeginHorizontal();
    	overallQualityInt = Mathf.RoundToInt(GUILayout.HorizontalSlider(overallQualityInt, 0, 5,GUILayout.Width(150), GUILayout.Height(35)));
    	QualitySettings.SetQualityLevel(overallQualityInt);
    	GUILayout.TextArea(QualitySettings.names[overallQualityInt],GUILayout.Width(30), GUILayout.Height(30));
    	GUILayout.EndHorizontal();
    
    //The quality setting below isn't affected by the Overall Quality slider and is reset to zero
    GUILayout.Label("Antialiasing");
    	GUILayout.BeginHorizontal();
    	antiAliasingInt = Mathf.RoundToInt(GUILayout.HorizontalSlider(antiAliasingInt, 0, 3,GUILayout.Width(150), GUILayout.Height(35)));
        QualitySettings.antiAliasing = Mathf.RoundToInt(Mathf.Pow(2, antiAliasingInt));
    	GUILayout.TextArea("x"+QualitySettings.antiAliasing.ToString(),GUILayout.Width(30), GUILayout.Height(30));
    	GUILayout.EndHorizontal();

First of all, I see you are calling QualitySettings.X methods in each OnGUI frame.

You shouldn’t do that, because you don’t know the implications (the internals of doing such a thing). You don’t know if the method actually checks if the value is changed.

So:

antiAliasingInt2 = Mathf.RoundToInt(GUILayout.HorizontalSlider(antiAliasingInt, 0, 3,GUILayout.Width(150), GUILayout.Height(35)));
if (antiAliasingInt2  != antiAliasingInt) {
    Debug.Log("Changed to " + antiAliasingInt);
}