- Whenever you set the current time of a
Playable (such as by setting an
AnimancerState.Time), it will remain at that time after the following update.
- This behaviour is undesirable because it arbitrarily delays the animation just to ensure that the first frame is always shown.
- It serves little purpose for sprite based animations since each sprite will likely be shown for multiple frames anyway.
- It also serves no purpose for bone based animations because they will generally be cross fading anyway so that frame will have very little weight.
- So it doesn't really achieve any benefit visually, but makes everything slightly less responsive by delaying every action by an extra frame.
- It is also inconsistent because pausing then unpausing an animation will continue advancing its time immediately but setting the time before unpausing (such as to reset it to 0 when stopping the animation) causes it to stay on that time for a frame after it is unpaused.
- Bug Report Case Number: 1196250
- When commanded to play an animation, Mecanim and the Playables API both show the same pose (as expected).
- However, when using their standard system for transitioning to another animation (an
Exit Time transition vs. Animancer End Events), the Playables API will be between one and two frames behind.
- Note that the technique used by Animancer for checking the time of the playable is the same as the one used by Unity's own Simple Animation component.
- This effect is more noticeable in sprite animations, particularly with a low frame rate.
- There is no known workaround for this issue.
- Bug Report Case Number: 1049025.
- Before Unity 2018.1, instantiating a model and using the Playables API to play an animation will leave it in its default pose for one frame, even if you call
- The only known workaround for this issue is to upgrade to Unity 2018.1 or later.
- Bug Report Case Number: 1015676.