Inconsistent Timing

Set Time

  • 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

Animation End

  • 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.

First Frame

  • 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 PlayableGraph.Evaluate immediately.
  • The only known workaround for this issue is to upgrade to Unity 2018.1 or later.
  • Bug Report Case Number: 1015676.