How do I scale a texture so it appears as fixed sized regardless of the display size?

I would like to make a button with a relative size depending on the screen size. For all screens, I want my button to start at 20% from the left (of the screen size) and end 20% from the right of the screen size. My texture is 700x400 and does not fit within the bounds of the button on small displays. The below code is what I have at the moment, but it is not working as I want it.

GUI.contentColor = Color.white;
if (GUI.Button (new Rect (
		 (float)(Screen.width*0.2),                       // start at 20% of the screen width
		 (float)(Screen.height*0.3),                      // start at 30% of the screen height
		 (float)(Screen.width*0.8),                       // end at 80% of the screen width 
		 (float)(Screen.height*0.5)), startTexture)       // end at 50% of the screen height
 ) {
	Application.LoadLevel ("MyOtherScene");
}

How can I make the texture to exactly fit the bounds of my button regardless of the display size?

Hi, here’s an example.

private float screenXp;
private Rect myRect;

private void Start(){
    screenXp = Screen.width/100;
    myRect = new Rect(screenXp*20,
                      0,
                      Screen.width - screenXp*40,
                      Screen.height);
}

private void OnGUI(){
    if(GUI.Button(myRect, startTexture)){
        Application.LoadLevel ("MyOtherScene");
    }
}

Personally i don’t like to use texture as a parameter for button, i usually drawtexture before or after that, and to remove visual button i use GUI.color = Color.clear; and after button GUI.color = Color.white;, but it depends on game visuals.

Edit: Oh i misread you question. It depends, if your mobile devices height will always be bigger then width, horizontal view is not allowed, then it’s pretty straightforward.

private float temp = Screen.height/7.0;

myRect = new Rect(Screen.width/2 - temp*2,
                      0,
                      temp*4,
                      Screen.height);