问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

unity 编辑器脚本怎么创建animatoroverridecontroller

发布网友 发布时间:2022-04-30 15:53

我来回答

1个回答

热心网友 时间:2022-06-26 19:55

  1、Machine的优点我就不累赘了网上现在已经一大堆了。
  2、Prefab自动化生成的方法我也不累赘了,如果模型的Prefab你还在手动做的话我建议你一定要换成自动生成的方法。尽量让美术不要碰U3D,只让美术出原始模型、贴图、动作、策划提供一个表格来描述 每个Prefab是由那些模型、动画、贴图组成,程序自动生成Prefab。
  上代码

  C#

  
  using UnityEngine;
  using System.Collections;
  using UnityEditor;
  using UnityEditorInternal;
  
  public class Test :Editor {
  [MenuItem("Test/Test")]
  static void DoCreateAnimationAssets()
  {
  //创建animationController文件,保存在Assets路径下
  AnimatorController animatorController = AnimatorController.CreateAnimatorControllerAtPath("Assets/animation.controller");
  //得到它的Layer, 默认layer为base 你可以去拓展
  AnimatorControllerLayer layer = animatorController.GetLayer(0);
  //把动画文件保存在我们创建的AnimationController中
  AddStateTransition("Assets/Resources/airenlieren@Idle.FBX",layer);
  AddStateTransition("Assets/Resources/attack@attack.FBX",layer);
  AddStateTransition("Assets/Resources/aersasi@Run.FBX",layer);
  }
  
  private static void AddStateTransition(string path, AnimatorControllerLayer layer)
  {
  UnityEditorInternal.StateMachine sm = layer.stateMachine;
  //根据动画文件读取它的AnimationClip对象
  AnimationClip newClip = AssetDatabase.LoadAssetAtPath(path, typeof(AnimationClip)) as AnimationClip;
  //取出动画名子 添加到state里面
  State state = sm.AddState(newClip.name);
  state.SetAnimationClip(newClip,layer);
  //把state添加在layer里面
  Transition trans = sm.AddAnyStateTransition(state);
  //把默认的时间条件删除
  trans.RemoveCondition(0);
  }
  }
  

  在导航菜单里点击Test按钮,你的AnimatorController文件就创建好了。
  接下来就是生成Prefab ,你可以根据美术提供的描述文件,来生成Prefab,生成的时候把我们创建的AnimatorController绑到生成的Prefab上面。
  我觉得用Machine动画最好的一点就是可以多个模型的骨骼可以并用,这样的话可以减少包的大小。但是我个人觉得既然骨骼重用,那么肯定是行为比较相似的模型的可以重用,一些比较有个性的模型恐怕也不能重用。如果要用machine动画我觉得策划和美术就需要在这里考虑了,把模型分好类分好哪一类模型重用一套骨骼。(如果你有更好的经验请在下面留言,谢谢)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
当孩子面对挑战时,我们如何鼓励他们积极面对? 如何帮助孩子走出挫折 当孩子遇到困难时应该怎么引导? 如何帮助孩子克服学习上的困难和挑战? 孩子遇到挫败感时,家长应该如何鼓励孩子? 怎么提升孩子在成长过程中应对困难的能力? 天津市老年人优待证 四个超级有效的男性强根壮阳之术 星期天早上问候语 炒饭烩饭128道 内容提要 unity unityeditor 脚本怎么添加到物体上 unity3d中如何用脚本创建对象或者类 新手求教unity3d创建js脚本,monodevelop打开时报错 如何正确的在Unity3D中创建C#脚本文件 unity3d圣典中文脚本怎么用 如何在Unity3d中创建脚本 电脑上从哪里看正版的斗罗大陆四? python发送邮件需要安装sendmail,电脑上已经有邮件软件还要安装sendmail吗? 如何打印AR-2048NV打印机的二维码 安装夏普打印机驱动一直显示正在配置设备怎么破?WIN110系统64位,打印机是AR-2048S 求hpg4-2048win7家庭版升级旗舰版的密钥,qq630730135 腾讯微云的api怎么用python来操作 mf47万用表电阻挡表笔短路时指针反转.测交变电压挡指针不动故障原因.电池安装正常 MF47型万用表10k档表笔不短接指针发生偏转,是怎么回事? mf47万用表怎样测量电阻?各档位怎样读数?直接读出多少欧吗? MF47指针式万用表两表笔短接时直流电压档、交流电压档、电阻档均指向零只有电流档正常 mf47万用表r×1档表笔短接指针不归零是不是表头坏了 小区计划修建一个长10米,宽6米的草坪。实际修建的草坪宽比计划增加了2.5米。草坪的实际面积是多少 一个长方形长10米,宽6米,分出一个最大的正方形,正方形的面积是多少平方米 一块长方形地长10米,宽6米,如果长和宽都扩大2倍,那么面积增加了多少平方米? unity5.x 怎么用脚本创建ui unity3 d怎么引用自己写的脚本 unity3d中如何给多个预制体添加同一脚本 怎么做番茄酱?2种做法轻松品尝美味 胶衣在中国是亚文化吗 全包窒息乳胶衣会把人窒息死吗穿胶衣? 番茄酱的做法是什么? b站up主欧派就是信仰发的视频,不作死就不会死系列1,开头有个穿胶衣的妹子,求出处。 胶衣买小点能穿不 柳州公立医院有哪几家 柳州哪个医院全身检查便宜点 游泳胶衣适合水温 广西柳州妇幼保健院是不是那种小医院 请问柳州有多少家三级甲等医院?最好的三级甲等医院是哪家? 柳州哪家医院牙科好点? 柳州有几家精神病院 请广西柳州的朋友帮忙看看柳钢医院是一个什么规模的医院,谢谢! 柳州最好的妇科医院是哪家 柳州市整形医院哪几家比较好? 我急需一个电子相册制作软件,无水印,破解无需注册正常使用的,可以导出为视频的那种,最好有多种模板的