- Home /
scaling guiTextures to always take up the same percentage of space on the screen?
anybody know? Currently mine scale, but it's kind of funky. This is what I'm doing:
myGUITexture.pixelInset = new Rect(Screen.width/2f, Screen.height/2f , -Screen.width + 100f, -Screen.height + 100f);
also I should add that when I say take up the same percentage of space, I mean regardless of the width and height. I'm working on an iPhone game and want it to work across all iOS devices.
I think you'll have to change for each device... Like, if you go on the app store, the iPhone apps WOR$$anonymous$$ with iPad, but they don't look right... almost ever... But thats just an observation... Or else a lot of dev's would do that in an update =).
Answer by Eric5h5 · Mar 29, 2011 at 09:04 AM
Remove all the pixel inset values, and use position and scale instead. GUITextures use viewport space, so if the x scale is 1, then it takes up the entire width of the screen. If the scale is .5, it takes up half the width, etc. Same for the height. If it's positioned at (.5, .5) then it's in the middle of the screen.
The only thing you have to be concerned about is aspect ratio; for example iPad is 4:3 and iPhone/iPod touch is 3:2. There's a couple of scripts on the wiki that can account for this.
(I did the GUI for Realmaze3D with GUIText and GUITexture like this, and doing a retina display update required zero changes to the GUI. Basically all I did was reimport a few textures at a higher resolution...everything just works. Making an iPad version would require some work because the screen size is significantly larger, so ideally the controls would have to be redone.)
Your answer
Follow this Question
Related Questions
Unity3d GUI Element Scaling 1 Answer
Reduce Draw call for Multiple GUI Textures with same Texture 1 Answer
Right constrained scalable GUITexture 0 Answers
Scaling a GUI image 1 Answer
Scaling bg gui texture without stretching it in unity 4.6 0 Answers