Download

UMG - Issues (no "Get" nodes?) and feature requests

Hello there,

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.

Anyway this post is getting a little ranty and longer than I was intended to :stuck_out_tongue:

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.

  1. We need a “Get” node for every “Set” node.

  2. 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.

  3. More Scroll Box parameters: left side scroll bar option, scroll bar opacity, get current scroll offset etc.

  4. 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)).

  5. Ability to change/customize/disable the right click “copy paste” dialog (when selecting text).

  6. 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.

  7. 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.? :stuck_out_tongue:

+1 for these…I’d also like the ability to use a render target texture within a UMG widget.

Most/All properties will be become minimally readonly in 4.6 from blueprints.

Render targets are already usable in UMG. Just assign the render target to an image widget’s Brush at runtime.

Ah, thanks! :smiley:

@ NickDarnell - I have just attempted this unsuccessfully, the RenderTarget texture is always rendered as a black image, whereas applying the exact same material to a scene correctly displays the captured scene. The same thing occurs whether I apply it in the editor or at runtime via the blueprint…what could I be doing wrong?

Hey Nick thanks for replying.

What exactly do you mean by minimally readonly? I tested the 4.6.0 preview and as far as I can tell nearly nothing has changed about this, I still can only change variables (like Set Scroll Offset, Layout position etc.) but I cannot read any of those values via blueprint.
The only thing that I found that has been added is “Get Desired Size” which is really useful (and probably can be used to get the max Scroll Offset) but I was hoping we would be able to read all the variables, I mean it makes little sense to me to be able to change a variable but not be able to read it lol :stuck_out_tongue:

Is this something that will be added in the “final” 4.6 release? or at least planned at all?

Some things need to be cast. For example, if you want to change the position in screen space relative to an anchor point for a widget, you first have to cast it to a canvas slot. Then you can see/change all the properties for a canvas panel child widget.

What Jared said :slight_smile: By minimally read-only I mean all properties should at least by read-only, some are writable as well. You just may have to cast it first.

I dunno guys, no matter what I try all I see is “Set” nodes :stuck_out_tongue: umm

SET.jpg

I was remembering incorrectly. You’re totally right!

Looks like the properties are marked with EditDefaultsOnly, BlueprintReadOnly; but the Blueprint graph view doesn’t interpret that as readonly.

On this topic I’d love a node to Get the ColorAndOpacity of a TextBlock!

I could only find TextBlock->SetColorAndOpacity

I wanted to do custom animation, but I couldn’t because I could only set the value of the color, not retrieve the current value so I could incrementally update it.

I could have stored a value but I was really hoping for a get node :slight_smile:

Thanks Nick!

Rama

PS: Nick and Epic, some happy feedback on UMG here:

https://forums.unrealengine.com/showthread.php?34610-Thank-You-For-UE4-!

I’ve checked in a fix that looks like it has been integrated into 4.6, so should be in the final release.

Is there any news on when this feature will be implemented? I have a UMG ScrollBox and am realling missing a Get node for the Scroll Offset and a node to get the maximum Scroll Offset as well. I noticed that there aren’t any nodes to set the scroll bar visibility or the scroll bar thickness (only get nodes)…

Still waiting for that as well, among other things… cough rich text support cough… :rolleyes:

In the meantime I made a custom scroll box component with exposed scroll bar offset.

@ Epic… it’s truly a shame that you do not try to push the functionality of UMG further… the potential is there (and it’s enormous too)! but there are still basic stuff like this missing.

Working with UMG is trying to use as many workarounds as possible, and well, it makes fun since for almost anything there is some hacky workaround :wink:

Hi** TK-Master**](https://forums.unrealengine.com/member.php?1127-TK-Master) I had a similar problem with the scroll offset on the flowing link you can see what I do for know the total offset , and from there you can know many things!

I hope that help

And yes would be good have all this “Get” nodes, at least seems more intuitive and consistent

Greetings!

If you find basic stuff missing, send us pull requests for them. It’s an easy way to ensure the missing things get visibility, tracked and solved. Especially if you’re already going to the trouble of making a parallel implementation.

I could send a few pull requests but it’s just exposing a couple of variables that are already there, if I had the skills to implement some of the more difficult features then I wouldn’t be asking, I would be giving code instead :stuck_out_tongue:

May I ask if there are any short-term plans of improving the text in UMG?

There are quite a few UI examples that I could show you that would simply be nearly impossible to do with UMG as it is now (at least not at that level of complexity) and it mostly has to do with the limitations of TextBlock.

In my case:

I’m making a modern mmo-like chatbox, it does not require any fancy features like emoticons (:p) or glowing animated text but just basic chat channel color, inline bold text and little things like that (**even ***the *forum itself has **[COLOR="#00FFFF"]support [/COLOR]**for ***that ***:p)

Currently, to do that you would have to split every single message into multiple TextBlocks (some for the bold, some for other color etc.) and at the end you end up having over 1000 textblocks just for say… 20-30 messages (not to mention how difficult it is to wrap all the text blocks properly to look like a single line).

At that point the framerates go down quite a lot since there are a lot of draw calls.

I could go on but let’s just leave it at that, I apologize if my post comes out a bit rude, I’m just trying to give good feedback.

What you’re asking for is the SRichTextBlock. It’s in Slate, but it’s a very complex and powerful control. I’ve started wrapping it in mainline, but that’s mostly an ‘as i have time’ kind of project, completely experimental, no timeline for finishing it.