Unity开发-Mecanim动画系统(三)

Animator-动画状态机,动画控制器

1、手动创建(动画控制器)AnimatorController:
Paste_Image.png
Paste_Image.png

还可以这样打开:

Paste_Image.png
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/[email protected]", layer);
        AddStateTransition("Assets/Art Resources/Character/moster-002/basic/[email protected]", layer);
        AddStateTransition("Assets/Art Resources/Character/moster-002/basic/[email protected]", 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 一起交流,分享心得,获取项目资源。

你可能感兴趣的:(Unity开发-Mecanim动画系统(三))