How to display needs (hunger, thirst, etc) % in text form?

I would only put things on a binding if it’s going to change often enough that you would put it on a Tick in another situation. Otherwise, whatever code is causing the change to your variable (say, Hunger for example) might be called way more often than necessary.

I started setting up all of my UMG widgets with bindings but really I found it better to just call the change from elsewhere.

I usually create functions in my widgets which handle updating their text, and then just call the function on the relevant widget when something with UI tied to it gets updated. For example, in your code (or ideally your function) where you change the player’s hunger, just add a reference to your UI class which contains the text for the percentage then use the Set Text node on the widget component.

From what I understand this is much more efficient and bindings are better left for variables in your game which are changing very often or need to be very accurate.

On a side note, when I wanted to get a percentage and display it as one in my UI, I just took the raw values and converted them in to a percentage.

CurrentValue / MaxValue will give you the percentage as a decimal, then you can just multiply the result by 100 and you have your percentage, just append a %.