- Home /
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?
Answer by YoungDeveloper · Apr 26, 2014 at 08:37 PM
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);
Your answer
Follow this Question
Related Questions
How to make game recognise Screen resolution on startup 1 Answer
Multiple Cars not working 1 Answer
Draw texture the same size of a sprite 1 Answer
Distribute terrain in zones 3 Answers
GUI.DrawTexture Center on screen 1 Answer