A simple way to do it (While dirty) is to make all your GUI for one resolution, and then use transform scale instead of pixel insets. This will keep the GUI uniform across all resolutions, but you will run into aspect issues.
Other than that, NGUI etc can all handle that sort of stuff really well.
I’m also making my first Android app and coming up against this. StaticNova, your suggestion looks good, I can see how it would work but are there any links to exploring this method fully? I think an Asset store package would be a bit of overkill for me personally but I’m surprised nobody takes the idea to the publishing sector and releases a small e-book (Unity Coders Guide to Android Screens Sizes!) and charge a couple of bucks.
Actually, a small section on the Asset Store for Unity e-books/guides would be cool.
I’m not aware of any proper documentation on the method, but all I did was take the width then height of the texture and then divide it by the width then height of the resolution I was targeting (respectively). As I said earlier, it isn’t the perfect method but it works with a lack of headaches.
I was trying to find a solution to the same thing. I couldn’t find any scaling technique that would work with my GUI. Mine is laid out in the editor, not drawn with code and all the scripts that I found to handle this required you to draw the GUI inside the scaling script.
Probably best to use something like NGUI or wait for the new system that Unity are working on (but who knows when that will be).
Simple script I put together that you just throw on any GUITexture in the scene and it will handle the proper scaling for you. Some simple stuff in there for positioning as well.
Will it work on GUI Text and if not, can it be modified to support it? I would happily pay $10 to have my current GUI looking consistent across all devices without having to get NGUI and then rebuild the whole thing.