I notice UMG is out of experimental, and I was wondering if it would be a decent solution for displaying mobile interfaces. I haven’t looked into it too deeply yet.
I’m working on a mobile game and UMG in 4.5 seems perfect for it. Touch events work seamlessly, the customizable scaling curve gives us control over how the UI scales to different device resolutions and the animation enables lively UI without much code. You can also create highly modular UI by creating user widgets with custom properties and using them inside your other widgets.
Are there any issues with performance, draw calls or texture sizes/streaming?
So far, no performance problems. My UI isn’t terribly complex yet, but I have been some quite intricate combinations of horizontal, vertical and overlay containers hierarchies to create some nice resizable layouts (this stuff is very powerful when you get the hang of it):
Notice how the decorations adjust themselves to fit the length of the text boxes, with zero coding.
That said, there are a few bugs, which I hope will be ironed before release. The biggest ones so far are not being able to hide elements (neither “invisible” and “collapsed” do anything) and not being able to save a widget that contains an instance of another user widget that contains animation data, even if it works fine in the editor. The animation editor UI is a bit wonky too and needs some polishing, but it’s manageable.
It’s already far better than drawing everything by hand in a HUD blueprint or doing Slate UI through C++.
This is what’s sapping my time. The math to support iOS and Android resolutions is pretty frustrating at times. The two bugs you listed sound pretty terrible too but I’m guessing they’ll be resolved shortly (if not in 4.5) and it’s probably worth me going in the direction of UMG.
Thanks for the information! Helps me look out for those issues without bashing my head against the wall for hours wondering what I’m doing wrong.
Those glitches are most likely be fixed on final 4.5. For now it’s possible to work around them by using opacity instead of visibility and avoiding animations in manually placed user widgets (there’s no problem if you spawn the child user widgets using blueprints, however).
The animation editor is usable. The biggest omission is the lack a setTime and setValue options for keyframes, so it takes some work changing keyframe values. Keyframes snap to other keyframes, fortunately, which makes it possible to align them to the same time.