Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward

文章目录

      • 一、前言
      • 二、定位问题
      • 三、解决方案
        • 2、方法一
        • 3、方法二
        • 4、方法三
        • 5、最好的方法

一、前言

今天同事遇到了一个问题,Unity播放某个动画的时候,报了如下的错:
Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward_第1张图片

The oldWrappedTime is greater than the newWrappedTime when playback direction is forward

二、定位问题

经过测试,想要触发上面这个报错,需要4个条件。

1 动画使用旧版的Animation,即Animation文件必须是Legacy的,不使用Animator方式播放,而是直接通过Animation组件播放。(Legacy的设置必须把Inspector窗口设置成Debug模式)
Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward_第2张图片
Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward_第3张图片
Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward_第4张图片

3 动画的Wrap ModeOnce
Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward_第5张图片

3 动画的关节帧不从第0秒开始。
Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward_第6张图片
4 动画上绑定了事件。
Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward_第7张图片

三、解决方案

经过测试,解决方案有好几个。

2、方法一

动画关键帧从第0秒开始
Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward_第8张图片

3、方法二

Animationr动画的Wrap ModeDefault
Unity播放动画报错:The oldWrappedTime is greater than the newWrappedTime when playback direction is forward_第9张图片

4、方法三

把动画上的事件删除掉,如果事件是必须的,当我没说。

5、最好的方法

最好的方法,就是抛弃LegacyAnimation, 使用Animator来播放Animation
毕竟LegacyAnimationUnity要废弃的功能,没必要坚持使用LegacyAnimation

你可能感兴趣的:(Unity3D,unity,animation,动画,animator)