Animator-动画状态机,动画控制器
1、手动创建(动画控制器)AnimatorController:
还可以这样打开:
2、代码创建(动画控制器)AnimatorController:
using System.Collections;
using UnityEditor;
using UnityEditor.Animations;//5.0改变 UnityEditorInternal;并不能用了。
public class CreateAnimatorController : Editor
{
[MenuItem("ModelConfig/创建Controller")]
static void DoCreateAnimationAssets()
{
//创建Controller
AnimatorController animatorController = AnimatorController.CreateAnimatorControllerAtPath("Assets/animation.controller");
//得到它的Layer
AnimatorControllerLayer layer = animatorController.layers[0];
//将动画保存到 AnimatorController中
AddStateTransition("Assets/Art Resources/Character/moster-002/basic/moster-002@run.FBX", layer);
AddStateTransition("Assets/Art Resources/Character/moster-002/basic/moster-002@stand.FBX", layer);
AddStateTransition("Assets/Art Resources/Character/moster-002/basic/moster-002@born.FBX", layer);
}
private static void AddStateTransition(string path, AnimatorControllerLayer layer)
{
AnimatorStateMachine sm = layer.stateMachine;
//根据动画文件读取它的AnimationClip对象
AnimationClip newClip = AssetDatabase.LoadAssetAtPath(path, typeof(AnimationClip)) as AnimationClip;
////取出动画名子 添加到state里面
AnimatorState state = sm.AddState(newClip.name);
//5.0改变
state.motion = newClip;
Debug.Log(state.motion);
//把state添加在layer里面
AnimatorStateTransition trans = sm.AddAnyStateTransition(state);
}
}
补充:
inspector有一个debug模式,你在debug模式下修改一下Animation Type为0 就可以了
Unity有两套Animation系统,一套是legacy,一套是Mecanim。
Debug模式下的Animation Type 0表示Mecanim,可以用于animator;1表示Legacy,用于animation组件。
一个人的路需要更多人的陪伴:欢迎加群: 134688909 一起交流,分享心得,获取项目资源。