Hello there. I know this post is really old, but I wanted to make my contribution because I have found something interesting regarding this.
While I was experimenting with timeline components, I concluded that there IS a way to make the animation stop where it is during the timeline using the playableDirector.Pause() function instead of using playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(0).
To do this, you have to reproduce these steps :
1 - Make sure the GameObject you wish to animate contains an animator component, WITHOUT an animation controller component: the reason why your GameObject resets in animation, is because the Animaion Controller automatically brings it back to the default state in it. You might also notice your object playing the default state animation instead of pausing if you put an actual animation in the default state.
2 - Add an animation track in the timeline, and assign the GameObject you set up in there.
3 - Press the red RECORD button, and change one of the properties of the GameObject in your scene slightly in order for the first keyframe to be created in the track.
4 - Once the keyframe is created in the animation track, double click on the red area where the keyframe is to open the animation tab, and animate away.
Now, when you test this in game after reproducing these steps correctly, you will notice your animations actually stop where they should.
Additional Note : do NOT use playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(0) to pause your timeline. I noticed there’s a bug where if you pause for long enough and resume by setting the speed to 1 again, the soundtracks you might put in your timeline might not play again. That’s because they indirectly are still playing on the same speed, and Unity thinks they have already finished playing. And so, Unity does not continue playing the sound file. This bug can still be reproduced in the latest version of the timeline package.
The playableDirector.Pause() function is therefore the way to go. It actually pauses the sound tracks, and with the animation track fix above, it should also fix the animations.
Meanwhile, if you feel you are forced to have a GameObject that has an animation controller with multiple animations, then make sure to use playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(0) to properly pause its animations. Unfortunately though, you will have to create a separate timeline to pause the audio and use the playableDirector.Pause() function.
I hope that cleared out some issues for some people
there are quite numerous bugs in the Timeline component, and since I’ve been using it for quite a while, I know exactly what, when, and where to use it for in any situations.