Quick answer: tw.pause() and tw.play() retain state. set_pause_mode controls behavior under tree pause.
Tween animation pauses with menu. Resume restarts from beginning. You called stop() instead of pause().
The Fix
var tw = create_tween()
tw.set_pause_mode(Tween.TWEEN_PAUSE_PROCESS) # run through pause
tw.tween_property(node, "modulate:a", 1.0, 1.0)
# Later
tw.pause() # retains progress
await some_event
tw.play() # resumes from pause
pause/play preserve internal time. stop/play restart. Pick mode based on whether tween should run through tree pause.
Verifying
Pause mid-tween. Resume continues smoothly.
“pause/play. Stop = reset.”
Related Issues
For Tween bounce, see bounce. For Tween freed, see freed.
pause/play. State holds.