So I decided to take UMG for a spin, I’m currently trying to make a chatbox system but seems UMG has it’s limitations.
It was coming along nicely (it’s functional at least) but there are many things that I would like to see improved in UMG.
Most importantly… there seems to be many variables that have a “Set” method but not a “Get” one, the layout parameters for instance, there is a Set node for position, size, alignment even anchor points but there is no “Get” method for any of them.
Now you might say that there is a workaround for that by creating a variable and then setting it at the widget’s construction but having to do that all the time is not only incredibly (and unnecessarily) inconvenient but also kinda breaks the whole designer workflow since you have to copy over the values from the designer to the created variable (if you need the default’s to be the same at least).
However even that workaround doesn’t work in all cases… to give you a more specific example, I was trying to implement auto-scrolling in the chatbox, it would be possible except there is no “Get Scroll Offset” node (only Set) so when the user changes the scroll you have no way of knowing what is the current scroll offset, which means if the user has scrolled up to read a message and a new message is received it will auto scroll down (normally you want to auto scroll only if the scroll bar is already scrolled all the way down, but there is no way of detecting that).
Also there is no way of knowing the max scroll offset either so currently to make it auto-scroll I have to set the offset to a large number and hope it’s larger than the content’s height.
Now I know that UMG is very much under development and by no means finished but at any case here is a (relatively) short list of the features I would like to see implemented.
We need a “Get” node for every “Set” node.
Basic text effects (outline, underline, strikethrough and of course bold, italics etc.), the only thing you can do about that right now is change the font which is pretty limiting.
More Scroll Box parameters: left side scroll bar option, scroll bar opacity, get current scroll offset etc.
Text Block: option to make the text selectable, better wrapping… it doesn’t seem to wrap long text (currently it only wraps by words (space)).
Ability to change/customize/disable the right click “copy paste” dialog (when selecting text).
Better support for draggable and movable elements/windows, the way I currently do it is by changing the Layout Position X,Y but I also have to account for different anchor points and I had to pass the mouse click release event from the controller to the widget via an interface message… it turns out to be a lot of work and gets a little too “hacky” if that makes sense.
Would it be possible to dynamically pass a text into a material (as an alpha perhaps?) so that we can add fancy effects like pulsing glows etc.?