02-02 Live Inspector

Location: Samples/02 Fine Control/02 Live Inspector

Recommended After: Basics

Learning Outcomes: in this sample you will learn:

How to manually control Animancer via the Inspector.

How various parts of the Inspector correspond to code.

Summary

This sample is a tutorial which gives step by step instructions on how to do a few things manually using the AnimancerComponent's Live Inspector instead of using scripts.

You can't manually set up runtime behaviour like this, but viewing and fiddling with the animation details can be very useful for debugging issues in the Unity Editor.

Overview

The code used in this sample isn't important, it's only there to display instructions and wait for the user to follow them before moving onto the next step.

The tutorial consists of 11 steps:

1. Select Animancer Component

To start, enter Play Mode and select the AnimancerHumanoid in the Hierarchy window to show it in the Inspector.

2. Initialize Animancer Graph

Right Click on the header of the AnimancerComponent in the Inspector and select the Initialize Graph function from the context menu.

This can be done in code by calling animancerComponent.InitializeGraph();, but that's generally not necessary because anything attempting to use the graph will automatically initialize it.

Note how the character is now in a hunched over pose with their legs under the ground. That's the default pose for a Humanoid Rig when it has no animations so let's add some.

3. Show 'Add Animation' Field

Animancer uses Unity's standard preview area at the bottom of the Inspector:

  • Click on the header to show or hide it.
  • Drag the header to resize it.
  • Right Click on the header to pop it out as a floating tab which can be docked wherever you like.
    • Closing that tab will return it to the bottom of the Inspector.

Right Click on the word States and select the Display Options/Show 'Add Animation' Field function from the context menu.

4. and 5. Add Idle and Walk Animations

Use the Add Animation field now showing at the top of the preview area to select the Humanoid-Idle animation then Humanoid-WalkForwards.

This is basically the same as calling animancerComponent.Play(animation).

6. Play Idle Animation

Ctrl + Left Click on the Humanoid-Idle animation to play it.

This is basically the same as calling animancerComponent.Play(animation, AnimancerGraph.DefaultFadeDuration) (which defaults to 0.25).

7. Play Walk Animation As Well

With the Humanoid-Idle animation still playing, Left Click on the Humanoid-WalkForwards animation to expand its details then click the Play button in that state's details.

Doing that in code would look like this:

AnimancerState state = animancerComponent.States.GetOrCreate(walkAnimation);
state.IsPlaying = true;

Note how the Inspector now shows both animations playing, but you can still only see the Humanoid-Idle pose in the Game window. That's because interacting directly with the details of a state only affects those specific details and the Weight of Humanoid-WalkForwards is still 0.

  • Weight determines how much the state affects the animation output.
  • IsPlaying determines whether the state's Time is advancing (according to its Speed).

8. Set Weight

Set the Weight of Humanoid-WalkForwards to 0.4.

Now we have a blend of both animations playing at the same time. This sort of thing is normally achieved using Mixers, such as in the Linear Mixers sample.

Auto Normalize Weights

Note how setting the Weight of Humanoid-WalkForwards to 0.4 automatically changed the Weight of Humanoid-Idle to 0.6 so that they add up to a total of 1. That's a feature of the Inspector which can be disabled via Display Options/Auto Normalize Weights if you don't want it.

If you had set its Weight in code like this:

AnimancerState state = animancerComponent.States.GetOrCreate(walkAnimation);
state.Weight = 0.4f;

Then it would only affect that state so everything can have whatever values you want.

9. Pause Graph

Click the Pause button at the top of the preview area to pause the character.

This can be done in code by calling animancerComponent.Graph.PauseGraph();.

The character is now paused, but nothing else is. You can still Right Click in the Game window and drag to move the camera around.

10. Unpause Graph

Click the Play button at the top of the preview area to resume playing.

This can be done in code by calling animancerComponent.Graph.UnpauseGraph();.

11. Set Speed

Click the 1.0x button at the top of the preview area next to the Play/Pause button to show the Speed slider.

Use that slider to set the speed to 0.5.

This can be done in code by calling animancerComponent.Graph.Speed = 0.5f;.

Conclusion

Watching the Inspector and using these controls to see how things affect the character can be very useful for debugging animation issues without needing to write new scripts just for that.