Okay, you want to play an animation, then nooooooo………..the model has more than one animation, so what do you do? Do you go through the process and create transitions, add parameters and do all of that? No you don’t need to actually. This is a handy tool for doing things fast. Here is the download link, and also as usual the explanation part of it, coz what use is things that you don’t understand or learn from?
How to use
- Add the Animation Player script to your model, it will give you the names of the animation clip

2. Call PlayAnimation using Vuforia Default Trackable Event Handler or Button

3. Type in the name of the animation you want to play in the slot. Done! When your ImageTarget is detected, the animation will play.

The Editor Code
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(AnimationPlayer))]
public class AnimationPlayerEditor : Editor
{
AnimationPlayer myTarget;
UnityEditor.Animations.ChildAnimatorState[] states;
public override void OnInspectorGUI()
{
// Assign the script to this inspector so that we can play with its properties
myTarget = (AnimationPlayer)target;
// create the menu and add items to it
GenericMenu menu = new GenericMenu();
GetAnimatorStates();
GUILayout.Label("Animation State Name From Model:");
foreach(UnityEditor.Animations.ChildAnimatorState b in states)
{
GUILayout.Label(b.state.name);
}
}
void GetAnimatorStates()
{
// Get a reference to the Animator Controller:
UnityEditor.Animations.AnimatorController animatorController = myTarget.GetTargetAnimator().runtimeAnimatorController as UnityEditor.Animations.AnimatorController;
// States on layer 0:
UnityEditor.Animations.AnimatorStateMachine stateMachine = animatorController.layers[0].stateMachine;
states = stateMachine.states;
}
}
The Script (called AnimationPlayer)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AnimationPlayer : MonoBehaviour
{
Animator animator;
// Start is called before the first frame update
void Start()
{
animator = gameObject.GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
}
public Animator GetTargetAnimator()
{
if(animator == null)
{
animator = gameObject.GetComponent<Animator>();
return animator;
}
else
{
return animator;
}
}
public void PlayAnimation(string animationName)
{
if(animationName != "")
{
animator.StopPlayback();
animator.Play(animationName);
}
}
}
The Explanation
This script has two parts. The first part is the editor extension. The reason we need the editor extension is to access the Animator’s Editor properties in order for us to extract the animation state names. This information is only available through UnityEditor.Animations.AnimatorController.
The second part is the script itself. We need this script to be two things, one is to become the interface that our editor script will rely on to get the reference to the Animator. The second function is for us to ask the animator to play our animation of choice.