|
出错了,为什么呢?由于此时没有设置跳跃动画的layer,导致跳跃动画的layer与idle的layer的值都为0,拥有同样的播放优先级,所以按下空格键时准备播放跳跃动画,但是在下一帧时程序发现此时从marioController 脚本组件中得到的currentSpeed变量的值小于0.1,所以又转为播放idle动画,可是此时在此动画脚本中执行到了上面蓝先的这一行,发现lastJump此时是空的(因为此时没有播放跳跃动画嘛),于是才提示空引用错误。所以工程此时就会暂停,我们可以从上面这张图中得以发现,看,goober此时是不是停在半空中,程序是不是暂停运行了?总结一下:如果某个动画状态的layer越高,执行起来就会比layer值较低的动画状态优先,且只有此动画状态被Stop或暂停时才有可能执行其他动画状态。官方的一个说明是: Lower layer animations only receive blend weights if the higher layers didn't use up all blend weights. 翻译过来就是:layer较低的动画只能在layer较高的动画没有占用全部混合权重时才有可能收获到混合权重,这也支持了我们的结论。 关于权重,即AnimationState.weight, 这是一个较容易误解的概念,建议读者事先看看文档上的API解释,我在后面会着重进行讲解的。好了,这次就先讲到这了,下一篇我会重点介绍动画混合,如果允许的话,我还会介绍一下叠加。有兴趣的朋友可以关注一下,给点鼓励吧! |
相关文章: