欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity AnimatorController 自动添加动画片段

程序员文章站 2022-05-04 19:55:24
...

Unity AnimatorController 自动添加工具

AnimatorController

一个动画控制器可以让你安排和维护一套动画片段和相关的动画转换
中的字符或对象。在大多数情况下,拥有多个动画并在某些游戏条件发生时在它们之间切换是正常的。例如,您可以从的漫游动画剪辑切换
每当按下空格键时,跳转动画剪辑。但是,即使您只有一个动画片段,您仍然需要将它放入动画控制器中以在游戏
上使用它。

动画控制器引用其中使用的动画片段,并使用状态机
管理各种动画片段和它们之间的过渡,它可以被视为动画剪辑和过渡的流程图,或者是在Unity中用可视化编程语言编写的简单程序。有关状态机的更多信息

动画控制器我们这边要用到的东西
AnimatorControllerLayer 动画层级
AnimatirStateMachine 动画状态机

首先创建Editor文件 创建打开的窗口

class SpineAnimatorControllReplace
     [MenuItem("Tools/SpineAnimatorReplace")]
        static void showWindow()
        {
            GetWindow(typeof(SpineAnimatorControllReplace));
        }

选择要生成的动画文件,也就是在文件里面的Animation 文件。

void OnGUI()
{
  Object m_SelectObj=  Selection.activeObject ;//在Project的面板上选择对应的模型文件
  if(GUILayout.Button("确认选择"))
  {
    string m_SelectPath= AssetDatabase.GetAssetPath(Selection.activeObject);//选择物体的路径
     Object[] newClip = AssetDatabase.LoadAllAssetsAtPath(m_SelectPath);//获取路径下的所有资源,也就是动画片段
     AnimatorController m_Controller=new AnimatorController();
     AssetDatabase.GetAssetPath(m_Controller);
     m_Controller
     AssetDatabase.Refresh();
     for(i=0 ; i<newClip .Lenght;i++)
     {
        if(newClip [i] is AnimationClip)
   	    {
   	    AnimationClip m_clip=newClip [i] as AnimationClip;
   	    m_Controller.AddMotion(m_clip,0);
 	    }
     }
  }
}

差不多就是这个意思。这个我也没有检测过 ,如果有文件也可以微调。
当然还有连线问题。个人觉得,连线除非是有固定的连线方法,不然的话基本是手动快