- Home /
Maintaining Image Aspect Ratios in GUI using Matrix?
I'm modifying GUI.matrix in order to make my HUD and other GUI stuff fit nicely on different screen resolutions, but I've come upon a problem. The matrix makes text resize wonderfully, but if the screen's aspect ratio changes, it also stretches/compresses the images to match. This, of course, makes the images distorted!
So then, how might I go about maintaining the image aspect ratios for different screen resolutions/aspect ratios, while still keeping everything placed and resized appropriately? Building off of the way I'm currently doing it would be most useful (but if that won't work I'm open to suggestions). I'm fine with scripting and getting familiar with Unity, especially the GUI stuff.
Answer by Statement · Apr 03, 2013 at 04:04 PM
Well you need a uniform scale (same scale for x and y) to avoid distortion. You could for example find out the shortest side of the screen and use that as a scale. However if you need to anchor items relative to screen position, then you can't just simply scale them but scale and translate them. Depending on your setup it can be more or less tricky to do, but the important thing to consider is where they should be located with relationship with other content.
For some simple cases, perhaps all you need to do is support anchoring to 9 places on screen (left, right, up, down, centre and any combination thereof), but if your content is positioned relative to another object then you need to take that into consideration when making your design.
The simplest solution to avoid stretching would be to have everything centred on screen and accept that on some orientations/aspect ratios will have blank padding left/right or top/down.
What you also can do is to make designs that fit common aspect ratios and pick a design that fits the current aspect ratio the best, and uniformly scale accordingly. There will be some padding for a few aspect ratios, but most would work fine.
Your answer
Follow this Question
Related Questions
XBox 360 controller for the GUI 1 Answer
Health & HUD Script, not syncing 1 Answer
GUI ScrollView doesn't work with GUI.matrix 1 Answer