Invalidate Layout and Volatility not Updating child widgets of Invalidation Box

Invalidate Layout and Volatility not Updating child widgets of Invalidation Box

Hello,

I am trying to address slow slate prepass and paint times on Android by using the UMG Invalidation Box using the documentation

I am not seeing my sub widgets update and have tried debugging as to why this is happening, but not having much luck.

My setup is as followed:

  1. There is a main HUD widget blueprint, derived from UserWidget
  2. The main HUD widget contains a panel with a bunch of sub widgets, one of which is a Health Bar widget. This Healh Bar widget also derives from UserWidget
  3. The Health Bar widget contains a Canvas Panel as the root with a few children: Progress Bar, and two Text Boxes, one to represent the Current Value and one to represent Max Value
  4. Using the Current Value as an example, I call Set Text with a new value whenever the player health changes based on an event.

This all works fine until I introduce the Invalidation Box. I have tried putting it in 3 different places:

  1. Wrapping the Canvas Panel with it, making the Invalidation Box the new root
  2. Replacing the Canvas Panel with it, also making the Invalidation Box the new root
  3. Placing the Invalidation Root only as a parent of the Current Value Text Box

After I introduce the Invalidation Box, whenever I call Set Text on the Current Value Text Box, I also call Invalidate Layout and Volatility on the Current Value Text Box as per the instructions. When I do this, I don’t see the the Current Value Text Box update its appearance.

In case I misunderstood the instructions, I also tried calling Invalidate Layout And Visibility on the Invalidation Box and the Canvas Panel, but this also does nothing.

Is there something I am missing from the instructions?

I have also tried using the Widget Reflector, but it seems to force Invalidate everything successfully every frame, making it hard to use to debug the underlying problem or setup.

Thank you,
Eric Friedman

4 Likes

UE 5.1 still has this issue. I set the Invalidation Box as the root, and found that playing UMG animations or changing brush for an image will trigger the invalidation, but not always trigger for set text of text block that not update frequently. Setting Invalidation Box/text block volatile still doesn’t update. So far I made a one frame UMG animation in order to trigger the “set text”, can do the job, but cumbersome and unwise.

3 Likes

Bump, any solution?

1 Like

Any solution? Would upgrading to 5.2 (or even downgrading to UE4) help?

1 Like