You animated a walk, a run and an idle in Blender. You export, import into Unity, and get one clip, or a clip called “Scene” that holds everything back to back, or a pile of clips for objects that shouldn’t have any. Sometimes the clip is there but the character doesn’t move. Blender animations not showing in Unity nearly always comes down to how Blender stores actions and which of the FBX exporter’s three animation modes you pick. This guide explains actions and the NLA in plain terms, gives you the export settings for each workflow, and covers splitting clips, looping and root motion on the Unity side.
How Blender Stores Animation
In Blender, keyframes live in an Action. An action is a reusable block of animation: “Walk”, “Run”, “Idle”. An object (usually your armature) has one active action at a time. You see and switch it in the Action Editor, a mode of the Dope Sheet.
The NLA Editor (Non-Linear Animation) lets an object hold many actions as strips on tracks. Clicking Push Down in the Action Editor moves the active action into a new NLA strip. That’s how you keep several actions attached to one armature.
Unity, on the other hand, wants one clip per animation. In the FBX file, each clip is stored as a separate “take” (an AnimStack). The whole job is getting each Blender action into its own take with the right name and frame range.
Stop Blender Deleting Your Actions
Before any export settings, check that your actions still exist. Blender deletes data blocks with zero users when you save and reopen the file. If you made a “Run” action, then switched the armature to “Walk”, “Run” may have no users and vanish on the next reload.
Fix: in the Action Editor, click the shield icon (Fake User) next to the action name for every action you want to keep. An “F” in the action dropdown list means it’s protected. Pushing an action down to the NLA also gives it a user.
For a file with many actions, this one-liner in the Scripting workspace protects them all:
import bpy
for action in bpy.data.actions:
action.use_fake_user = True
print(action.name, "frames", tuple(action.frame_range))
The printout also shows each action’s frame range, which is what ends up as the clip length in Unity. If a range looks wrong, open the action and set Manual Frame Range in the Action panel of the Dope Sheet sidebar.
The Three Ways to Export Animation
In File > Export > FBX (.fbx), open the Bake Animation panel. Its checkbox must be on. Then two options decide what you get:
1. Active action only (NLA Strips off, All Actions off)
Blender exports the scene’s current animation over the scene frame range as a single take. Good for a single animation, like a door opening. If you put walk, run and idle one after another on one long timeline, you also use this mode, then split the clip in Unity (see splitting).
2. NLA Strips on
Each non-muted NLA strip becomes its own take, named after the strip. This is the most controlled method for characters:
- For each action, make it active in the Action Editor and click Push Down.
- In the NLA Editor, rename strips to the clip names you want in Unity (Walk, Run, Idle).
- Mute any strip you don’t want exported.
- Export with NLA Strips on and All Actions off.
You get exactly the clips you see in the NLA, nothing more.
3. All Actions on
Every action in the file is exported as a take for each animated object it’s compatible with. It’s quick when one armature owns all the actions. In files with more objects, it’s the cause of junk clips: you get clips like Armature|Walk plus copies for other objects, and a stray test action you forgot about becomes a clip too. Delete unused actions first (in the Blender File view of the Outliner) if you use this mode.
Ticking both can give you duplicate clips, so pick one. For most indie character work, NLA Strips gives the cleanest result.
Bake Animation Settings
The rest of the Bake Animation panel:
- Key All Bones: on. Writes a key for every bone, even unanimated ones, so clips don’t leave bones stuck in the previous clip’s pose.
- Force Start/End Keying: on. Makes sure each clip has keys on its first and last frame, so the length is right.
- Sampling Rate: 1.00 bakes every frame. Leave it.
- Simplify: the default 1.00 removes keys it thinks are redundant. If you see small jitters or lost holds, set it to 0 and let Unity’s compression handle it.
Also check the armature settings in the same dialog: Only Deform Bones on (IK and control bones are baked into the deform bones) and Add Leaf Bones off. The scale and rotation settings from our FBX export settings guide apply here too. Set the scene frame rate in Output Properties > Format > Frame Rate before you animate; Unity plays clips at the file’s rate.
As a script, a character export with NLA strips looks like this:
import bpy
bpy.ops.export_scene.fbx(
filepath=r"C:/MyGame/Assets/Art/Characters/Hero.fbx",
use_selection=True,
object_types={'ARMATURE', 'MESH'},
apply_unit_scale=True,
apply_scale_options='FBX_SCALE_UNITS',
axis_forward='-Z',
axis_up='Y',
use_armature_deform_only=True,
add_leaf_bones=False,
bake_anim=True,
bake_anim_use_all_bones=True,
bake_anim_use_nla_strips=True,
bake_anim_use_all_actions=False,
bake_anim_force_startend_keying=True,
bake_anim_step=1.0,
bake_anim_simplify_factor=0.0,
)
Notice bake_space_transform (Apply Transform) is left off. It’s experimental with armatures. Use Unity’s Bake Axis Conversion if the character comes in with a -90 rotation.
Importing Clips in Unity
Select the FBX and check two tabs.
Rig tab:
- Animation Type: Generic for creatures, props and most non-human rigs. Humanoid for human characters that should share animations with other humanoids. Legacy only for old code that uses the Animation component. None means no animation import at all.
- Avatar Definition: Create From This Model for the main character file. For files that only contain animation for the same rig, use Copy From Other Avatar and pick the character’s Avatar.
- Root node (Generic): set it to the root bone if you want root motion.
Animation tab:
- Import Animation must be ticked.
- The Clips list shows every take Unity found. Click one to see its Start and End frames, loop settings and a preview at the bottom of the Inspector.
- Rename clips here if the names came through as Armature|Walk. Click Apply when done.
The clips appear as children of the FBX in the Project window. Drag them into an Animator Controller’s states. If a clip is in the controller but still doesn’t play, our Animator not playing guide covers transitions, parameters and layer weights.
📚 Want animation to feel better, not just work?
Exporting clips is the plumbing. Timing, anticipation and weight are what make them feel good. Our book list includes picks on animation and game feel that pay off for years.
Splitting One Timeline Into Clips
If you animated everything on one timeline (Idle on frames 1 to 60, Walk 61 to 92, Run 93 to 116), export with the active action only and split in Unity:
- In the Animation tab, select the imported clip and set its Start and End to the first range, then rename it Idle.
- Click + under the Clips list to add a new clip. Set its name, Start and End for the next range.
- Repeat for each animation, then click Apply.
Keep a note of the frame ranges, or put markers on the Blender timeline. It works, but every change in Blender that shifts frames means updating the ranges in Unity. Separate actions with NLA strips avoid that.
Root Motion and Looping
Looping
Select a clip and tick Loop Time for cycles like walk and idle. Tick Loop Pose to blend the last frame into the first. The coloured indicators next to the loop settings show how well the start and end poses match: green is a clean loop. If it’s red, your Blender cycle’s first and last frames don’t match. The usual trick is to copy the first keyframe to one frame past the end, and end the clip a frame before it.
Root motion
If the character physically moves forward in the Blender animation, Unity can use that movement through root motion. Tick Apply Root Motion on the Animator component. Then, per clip:
- Root Transform Rotation, Position (Y) and Position (XZ) each have a Bake Into Pose option. Baking keeps that part of the motion in the pose instead of moving the GameObject. Bake rotation so turning in the clip doesn’t spin the GameObject, bake Y so a jump doesn’t change ground height, and leave XZ unbaked if the clip should drive forward movement.
- Based Upon chooses what the root motion is measured from, such as the body’s centre of mass or the original root.
In Blender, animate movement on the root bone, not the armature object. Object-level animation on the armature exports to the file’s top node, which root motion setups usually ignore. If you’re not sure you want root motion at all, animate in place and move the character from code. Most indie controllers do this.
To quickly check which clips a character’s Animator actually knows about, drop this on it:
using UnityEngine;
[RequireComponent(typeof(Animator))]
public class ClipLister : MonoBehaviour
{
void Start()
{
Animator animator = GetComponent<Animator>();
if (animator.runtimeAnimatorController == null)
{
Debug.LogWarning($"{name}: Animator has no controller assigned", this);
return;
}
foreach (AnimationClip clip in animator.runtimeAnimatorController.animationClips)
Debug.Log($"{name}: {clip.name} ({clip.length:F2}s, loop {clip.isLooping})", this);
}
}
Troubleshooting
Only one clip imports
Bake Animation exported the active action only. Turn on NLA Strips and push your actions down, or turn on All Actions.
Actions disappeared from Blender
They had zero users and were cleaned up on save. Set Fake User on every action you want to keep. Undo history won’t bring them back after a reload.
Clips called Armature|Walk, Cube|Walk and so on
All Actions exports actions for every compatible object. Use NLA Strips instead, or export only the armature and mesh with Selected Objects.
The AnimationClip used by the Animation component must be marked as Legacy
You’re playing a Mecanim clip with the old Animation component. Use an Animator, or set the Rig tab’s Animation Type to Legacy.
Clip plays but the character doesn’t move
The clip was made for a different hierarchy. For Generic rigs, bone names and paths must match exactly; the Animation window shows “(Missing!)” next to broken paths. Renaming the armature or bones in Blender causes this.
Character explodes or shrinks when the clip plays
The armature’s scale was applied after animating, so the location keys are in different units. See our Blender scale fix for the safe order.
Clip is too short or cut off
The action’s frame range or the scene frame range is wrong. Turn on Force Start/End Keying, set a Manual Frame Range on the action, or adjust Start and End in Unity’s Animation tab.
FAQ
How do I export multiple animations from Blender to Unity?
Push each action down into the NLA Editor, name the strips, then export FBX with Bake Animation and NLA Strips on. Each strip becomes a clip.
Should I use NLA Strips or All Actions?
NLA Strips gives you exactly the clips you set up. All Actions is quicker but exports every action, including old tests, for every compatible object.
Why do my Blender actions disappear?
Actions with no users are deleted when the file is saved and reopened. Click the shield (Fake User) icon to keep them.
Can I put all animations in one FBX?
Yes. One character FBX with all clips is simplest. Separate animation-only files work too; set their Rig to Copy From Other Avatar.
Do I need root motion?
No. Most indie games animate in place and move the character in code. Use root motion when exact foot placement matters.
Reader questions
Asked by readers of this article and answered by AI. Behavior can differ between Unity versions, so test in yours.




Leave a Reply