This is the way. Event driven is the most efficient:
And this excellent post!
Namely:
Licensees often ask for general pointers on how they can lower the cost of rendering the UI in their project. When we optimize UI for our internal projects, here are our rules of thumb:
- Eliminate anything running per frame (tick/paint), especially in blueprints (tick/paint). Use blueprints purely for event based logic or short lived animations.
- Eliminate usage of bound attributes. Attributes, while useful, are not compatible with performance given how they poll every frame. Eliminating attributes bound to blueprint callable functions is especially important.
- Use invalidation. Invalidation panels prevent layout from occurring every frame on anything in the tree contained in an invalidation panel. In 4.23, there were a lot of restrictions for invalidation panels. For example, they could not support any widget ticking inside of them. 4.25 has overhauled them completely. More on that later.