项目中发现spine在循环播放和动作切换时,会出现部分骨骼错误播放的情况。
看了遍官方文档,发现关于动画复位的说明,猜测与其相关。
动画连续性 (pre-3.0) 这也意味着,如果没有自动复位逻辑,动画在连续播放的时候不一定和Spine中保持一致。相反,播放一个动画序列会导致之后的动画会继承之前动画的值和骨骼姿势。
查看SkeletonAnimation代码,发现有个 ClearState 接口,清除动画状态、mesh、重置骨骼动作等。
/// <summary>
/// Clears the previously generated mesh, resets the skeleton's pose, and clears all previously active animations.</summary>
public override void ClearState () {
base.ClearState();
if (state != null) state.ClearTracks();
}
针对部分动作,在播放前调用该接口即可。