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 @   瞬闪影  阅读(1301)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示