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.