Scaling the space between GUI elements

I have a stack of buttons aligned together in a menu, but unfortunately they don’t appear the same at different resolutions. Normally, there is between 1/2-1/4 centimetre of space between each button, but at <1920*1080 they grow closer and begin to overlap.

I’ve tried to use FlexibleSpace and padding, but sadly neither of them have worked.

Code sample:

#pragma strict

var customButton : GUIStyle;
var customButton2 : GUIStyle;
var customButton3 : GUIStyle;
var customButton4 : GUIStyle;
//private var rctOff : RectOffset;

function Start(){

}

function OnGUI () {
	if(GUI.Button (Rect(Screen.width*0.015625, Screen.height*0.014286, 75, 25), "Sandbox", customButton)){
		Application.LoadLevel("gameDemo");
	};

/*GUILayout.BeginArea(Rect(Screen.width*0.015625, Screen.height*0.013, 75, 20));
GUILayout.EndHorizontal();
GUILayout.EndVertical();
GUILayout.FlexibleSpace();
GUILayout.EndHorizontal();
GUILayout.EndVertical();
GUILayout.EndArea();*/
	
	if(GUI.Button (Rect(Screen.width*0.015625, Screen.height*0.052631, 75, 25), "Multiplayer", customButton2)){
		Application.LoadLevel("");
	};
	//GUILayout.FlexibleSpace();
	if(GUI.Button (Rect(Screen.width*0.015625, Screen.height*0.09091, 75, 25), "Options", customButton3)){
		//Application.LoadLevel("");
	};
	//GUILayout.FlexibleSpace();
	if(GUI.Button (Rect(Screen.width*0.015625, Screen.height*0.12987, 75, 25), "Exit", customButton4)){
		System.Diagnostics.Process.GetCurrentProcess().Kill();
	};
	GUI.skin.button.padding.top=20;
}

Pictures:

One thing you could do, is not calculate button size from Screen.width and height, but instead use constant numbers.

A GUI.SelectionGrid should keep the spaces constant. You’ll have to play around with GUIStyles to get the spacing between them correct, but once that’s set it shouldn’t change when the resolution changes.