Unity 使用Animation Clip(动画片段) 对Animation Rig的Rig Weight (rig权重) 进行调整,出现无法调整的问题,及解决方法

Posted Boy1nABox

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 使用Animation Clip(动画片段) 对Animation Rig的Rig Weight (rig权重) 进行调整,出现无法调整的问题,及解决方法相关的知识,希望对你有一定的参考价值。


问题:Animator播放Animation Clip,权重无法修改

如图,Animation Clip当中对Rig的权重有调整:


但在运行当中播放该动画片段无法对权重进行修改


原因分析:

我发现在运行阶段,点击Preview后再关闭Preview,动画能够对权重进行正常修改,但仍然无法确定原因。
在网上搜索后发现有相同问题的帖【链接】:

不同的是他是通过直接播放animation里的animation clip,我这里是用了animator来控制播放
于是我找到了unity技术人员的回复:

虽然问题仍然无法解决,但技术人员提到了:点击preview的时候,animator是关闭的,而关闭preview,animator会重新开启。


解决方案:

我根据自己拿到的线索,在播放动画之前,重启animator:

    public Animator RigController;
	...
	    RigController.enabled = false;//
        RigController.enabled = true;//
    ...
        RigController.Play("weapon_idle_" + weapon.weaponName);

在运行的时候发现权重能够正常修改了,且只需要重启一次animator,之后的动画都能够正常修改。

(方法仅供参考,如果有好办法赶紧告诉我!!!!!)

Unity Animation动画倒播 为什么要获取时间长度啊?

animation = GetComponent<Animation>();
//为啥要获取时间长度啊
animation["Dead"].time = animation["Dead"].clip.length;
animation["Dead"].speed = -1;
animation.Play("Dead");

这里不是获取时长,而是把动画的当前帧变为该动画的最后一帧,这是因为你这里是要倒播。就比如你要从1数到9 ,倒着数就需要先取到9,,然后从9数到1 参考技术A 使用unity开发时遇到各种问题,都可以在paws3d学习中心找到对应模块的视频资料来解决。
近期更有资深开发者在线分享unity开发经验,可以快速解决开发中遇到的各种问题。

以上是关于Unity 使用Animation Clip(动画片段) 对Animation Rig的Rig Weight (rig权重) 进行调整,出现无法调整的问题,及解决方法的主要内容,如果未能解决你的问题,请参考以下文章

unity 动画系统不会用

Unity3D中通过Animator动画状态机获取任意animation clip的准确播放持续时长

unity 3d中,Animation clip播放到第一个Animation Event事件就停了下来,为啥?

Unity Animation动画倒播 为什么要获取时间长度啊?

SIKI_Unity_2_入门_通过实例学习游戏的存档和读档

Unity解决动画不可用:The AnimationClip ‘XXX‘ used by the Animation component ‘XXX‘ must be marked as Legacy.