Unity Animation Miss Path
最近新接触到Unity的animation clip,工作上需要导入别人给的角色模型,这里记录一下遇到的几个问题:
1.不能播放特定的Animation Clip
在使用anm.Play函数时,报错The animation state could not be played because it couldn't be found!
具体解决方法:
需要检查两个点,第一,这个animation clip有没有放进对应Animation组件的列表里,如下图所示:
第二,可能是Animation Clip的格式有问题,找到对应的动画,在对应的Inspector这里点击右键,选择Debug模式,然后把动画的 Animation type换成Legacy,如果是循环播放的动画就把Wrap Mode变为Loop,然后换回来,点Aplply就可以了。
问题参考链接:https://answers.unity.com/questions/936818/animation-wont-play-please-help.html
https://answers.unity.com/questions/369981/the-animation-state-could-not-be-played-because-it.html
2.动画的Animation里显示root:Position Missing
如下图所示,大概是一串黄色的字:
出现这个的原因主要是改动了原本的Animation(或Animator)组件相对于播放动画的组件的层级位置,比如说我是这么一个层级结构,如下图所示,根节点挂载了相应控制动画的Animation组件:
root下面负责人体的各个组件:
如果我改成这个结构,就会报错,因为这个时候默认的路径是NewHandle,而上面没有挂载对应的Animation组件:
如果要解决上述问题,有几种方法:
- 打开对应动画的anim文件(打开之前最好备份),然后手动去更改路径,具体可以参考手动编辑anim文件的路径
- 按ctrl+6打开Animation组件,选择失效的animation clip,手动去更改原来的名字,如果原来名字是m,就改成…/m,具体详情参考给失效的Animation Clip改名
- 我看到一位博主写了个脚本,能自动去纠正路径,实际上是用代码完成了第一点提到的功能,具体可以参考【Unity】修复因GameObject层级变化而导致的animationclip内容丢失