Unity动画Disable时清除状态解决方法

问题

unity的Animator有个很反直觉的地方,就是当Animator被Disable时,它会释放掉所有的动画状态,当重新Enable时,动画会从第一帧重新开始,但这一般不是我们所期望的,我们希望的是它能继续从Disable的状态开始播放。

例子

举个例子,该场景中,我们播放个Cube向前动画,每隔一会我们会做下隐藏,我们希望它结束隐藏时,仍然能够从隐藏前的动画状态继续,直到达到终点为止。我们有2种隐藏做法,一种隐藏是不让Cube渲染出来,就能避开我所说的问题;第二种,则是通过gameObject反激活的方式进行隐藏。当我们采用第二种做法时,会发现Cube在激活后,又从第一帧开始播放动画了,
这就非常蛋疼。

解决方法

上网找了下资料,大致了解是Unity官方设计有误,为了解决这个问题,我们将Animator的keepAnimatorControllerStateOnDisable状态设置为true即可,这样就解决了。
image
image

参考资料

  1. https://forum.unity.com/threads/losing-animator-state.307667/
  2. https://forum.unity.com/threads/bool-parameter-does-not-persist-through-deactivation-reactivation-except-if-set-in-editor.287955/
posted @ 2024-03-28 21:25  陈侠云  阅读(382)  评论(0)    收藏  举报
//雪花飘落效果