Set Timer By Event node doesn't cause the event to be triggered

Timers literally reset when called.

When a timer is triggered it starts the countdown. If the same timer is called before the count down ends it simply resets the clock. A “New” timer is not being created.

e.g. I have a timer set for 10 seconds. It ticks for 8 (2 secs remaining) and is called again… Timers clock resets to 10 and starts ticking down again.

The Timer Handle is a reference to the Timer itself. It’s used to clear (cancel the timer), check if it’s (Active, Paused, UnPaused, Exists), Get Remaining or Elapsed Time, etc and so forth.


@ClockworkOcean is correct, using a timer here is not the right approach.

Overall you’ll need to use varying approaches for each element and or section of your settings UI.

For direct feedback settings such as volume controls (e.g. In Game Music Volume) You’ll want to adjust the actual Volume directly, so there’s input responsiveness. You’d then Set the config value on section or settings UI exit.

  • Apply directly to audio component on change.
  • Save input value to Float var, Set VolumeChanged? bool to true.
  • On UI Exit, Widget unload call Audio changes function.
  • Audio Changes Function checks Bool and updates settings as needed.

For Keybinding sections or others that do not need instant feedback you do not need to update settings config (save) immediately after a change.

You’d simply need to create a struct and have an element for each input axis/action. Make the change in the struct, set a bool (Keys_HasChanges?). On UI exit check the bool and execute the settings save functionality.

For Graphics settings you typically have some settings that require a restart and some that don’t.

For those that do not require restart to take effect you’d apply them just as keybinds. For the others you’ll need to use an “Apply Changes and Restart” approach.

1 Like