Hi there, Epic people at Epic! (If this should be in the forum instead of here, sorry! I’ll gladly move it over.)
I have to say, UMG is amazing. I’ve been working with it for a while now and it’s allowed my project to take leaps and bounds forward. There are, however, a few things I’ve bumped into that could use some work. I fully understand that 4.4 is a preview and UMG is at the experimental stage and as such is per definition not very reliable.
Windows 7 x64
Unreal Engine 4.4 (4.4.0-2237849+++depot+UE4-Releases+4.4)
UMG Widget is created and added to the viewport at BeginPlay from a Blueprint PlayerController and a C++ GameMode in an empty level.
First off, direct simple honest bugs:
- If you have an infinite loop in an UMG BP graph, the entire editor will crash if you start PIE. Usually, the editor just drops back out of PIE allowing you to rectify the problem.
- UMG assets are not visible in Standalone mode for PIE. No clicks register and nothing is rendered.
- Get Full Screen Size returns an empty Vector2D (Do I need to set this, and if so, what does it do?)
- Calling “Open Level” or any sort of level transition logic (open, travel, servertravel, etc) results in an editor crash if you do not remove the UMG widget from the viewport at Event End Play or elsewhere. Removing it before travelling allows it to work as expected.
- If you select an aspect ratio for your preview, it’s not retained if you switch to the graph and back again. Not a huge problem, but it becomes annoying in the long run.
- Using materials in styles doesn’t work - the texture preview simply displays a plain black texture.
Next up, two bugs that are a bit more involved.
- Copying & Pasting is not working very well.
If you copy and paste something in the UMG designer, the editor has a good chance of crashing. If it doesn’t, no offset data is copied and the element resets back to its defaults. Styles are retained, though.
If you copy and paste a button with a child textblock, you are unable to place or paste any more textblock elements on the same level as the button - if you try, it simply vanishes when you drop it. To allow you to place more elements on the same level, an editor restart is required. This also affects some other element combinations.
Ctrl+Z is very unreliable and crashes the editor half the time you try to use it. It’s nowhere near as good as in the rest of the editor where you can step back pretty far, and it records almost every change you make. In the UMG editor, Ctrl+Z doesn’t record nearly as much - in fact, it rarely works at all. To understand what I’m saying, try placing a few elements, editing some offsets and manually moving them around. Ctrl+Zing won’t work very well if you’re lucky enough to not crash.
- Checkboxes have no apparent way to access their state.
For some reason, all functions associated with checkboxes are set to protected and can’t be accessed. If you bind a function to the checkbox state, it refuses to change from its undetermined state, and you can’t pull the state from the element anywhere else in the graph.
Other elements such as editable textboxes are totally fine and work as expected.
- ListBoxes and ComboBoxes only accept objects as their subelements.
This I’m not sure if it’s a bug, or just me being stupid. If I wanted to populate a ComboBox with strings read from an array, there’s no apparent way to do it. From the designer panel, the elements only show assets from the Content browser and I found no way to assign a string to an object within the event graph.
ListBoxes are also not affected if you assign a style to them - they remain in their default state. ComboBoxes lack a way to assign a style entirely. There’s also no way to change settings for the text inside these two elements (font, colour, size, etc)
Now for some general feedback on improvements I’d like to see. UMG is amazing so far, but there’ll always be something, won’t it?
Something I think UMG really needs is a way to dynamically resize or reposition the UI elements depending on the rendered resolution. If this is already a thing, it needs to be made waaaay more obvious - I haven’t yet found anything that can do this properly! Something that would go a long way is a way to access offset values of the different elements (buttons, panels, etc) from the event graph, as well as a more direct way of getting and setting the resolution used by the game. Console commands work, but it’d be nice with a more direct approach (RequestResolutionUpdate node, anyone?)
Moving on, the widget preview desperately needs a grid/element snap feature. Snapping elements to their parents like you do in VS when developing desktop apps is a godsend and allows for much quicker prototyping and a nicer workflow. In VS, the elements snap with a bit of a margin - I would absolutely love to have this.
I’d also like to be able to select multiple elements (either from the tree view or in the preview) using CTRL. While moving an element also moves its children, it would be really nice to be able to move elements on the same level around in relation to each other.
It would also be very useful if Canvas Panels (or elements in general) could have quick hide/show buttons in the treeview, similar to the eyes in the Scene Outliner. When making multipage menus, I have to set the actual visibility of the element instead of being able to simply preview it (i.e, only in the editor), which is a bit of a hassle. More eyes for the UI god!
In Layout Data->Offsets, the Left/Top/Right/Bottom options are a bit confusing. Left and Top appear to move the element in relation to its parent when it has one and the Bottom/Right appear to affect scale. When on the root element, they seem to swap meaning every now and them. I would prefer having more literal offset values and an actual scale section instead, but might just be me.
Closing off, UMG is fantastic and I look forward to working with it in the future. It’s a very powerful tool, and a big thank you goes out from me to the Epic team for making such a wonderful engine.