Unity is a wonderful program, that lets you build 3D scenes, change them, and have them do almost anything you want very quickly. The GUI system, however, sucks. The GUI scripting system forces you to put all the code in one function, you have to specify resolutions directly, and you can’t see what you’re changes look like until runtime. It sucks.
I got fed up with this, and after reusing a lot of GUI code across different projects, decided to clean it up into a package and release it as UniGUI. It is essentially a framework of scripts that will turn regular Unity Gameobjects into GUIElements. You can make any collider a button, any group of objects into a scrollbar, a slider, a toolbar. This lets you use all the flexibility and ease of use that Unity already provides for Gameobjects, for your GUI. Take a look at the example scene for a preview of what it can do.
It also uses a couple of handy Input managers. InputUni lets you fake touches on a desktop, so you can seamlessly test your mobile game in editor without having to change anything. TouchHandler watches inputs and automatically translates them into C# events like StartTouch and StartDoubleTouch, so you don’t have to monitor any of this logic yourself, or worry about touches being mixed up between scripts. Replace all the duplicate touch counting, touch status changing, and even screen to worldspace calculation from your scripts.
See if it can help you! It costs $15, but will easily save you hours of work across all your projects, as it has done for me.