Unity Animator State Write Defaults 属性多个初始状态应用

Animator 中的 State 里有个可以勾选的属性叫 Write Defaults

因为一直是默认勾选的,也没太当回事,现在发现是个很重要的玩意

(其实就是Animator坑爹罢了,以后不要再用Animator里面的蜘蛛网写2D逐帧动画了,自己写个状态机不香吗?

一个常见的例子就是假如我想有多个可能的状态作为 Default State

如官方图

然而令人智熄的是官方的这个图根本无法实现(bug?

目前有个小技巧可以做到相同的目的:

创建一个空state,把这个state设为default State

然后再把它当作Entry像上图那样链接

看起来好像没什么问题,但是实际运行时会发现在空节点时,没有任何动画的Sprite会被一些不可预测的其他帧替换

导致人物看起来好像抽搐了一下

虽然只有一帧,但是仍然是要命的问题

这个时候,将空节点的Write Defaults 属性取消勾选即可按照预期运行

原来当某个节点中Motion,也就是动画是空的时候

Write Defaults属性勾选时,Animator会把所有没被动画设置的值设成一些默认值

而这些默认值有没有任何的官方文档解释

结果最终的结果就变得不可预测了

只要取消勾选,就算没有动画Animator也不会更改任何值

这样就会维持上一帧的状态。。。

如果你看到这里,并且也在做2D逐帧动画

劝你直接写状态机,然后手动调用Play函数(想念flash的第xxx天)


2022.1.17 再编辑

今天又遇到这个**问题了,再用动画机控制物体位置的时候,在切换状态的时候突然间会有这个动画里没有控制的物体飞回到初始位置。理想的状态是在切换动画时,这个未被‘animated’的物体可以保持切换那个瞬间的状态。一顿分析后发现其实就是这个脑瘫参数忘关了。。。

 

posted @ 2021-01-20 19:15  瞬闪影  阅读(1254)  评论(0编辑  收藏  举报