如何在 Unity 中更改 Spine 动画?

How do change Spine animations in Unity?

我有一个条件 if then 语句 运行,我希望在满足特定条件时改变动画。出于某种原因,当它开始时,会播放正确的动画,但当它被改变时,动画不会改变。代码是 LateUpdate() 中的 运行。我做了一个 hack 来测试动画的变化,但它也不起作用。

我读过的所有内容都说要使用 SetAnimation,它会覆盖之前的动画,但这似乎不起作用。这是破解我想要的结果的代码。

rightCrowdMemberAnimation.state.SetAnimation (0, "idle_07", true);

if (Input.GetKeyDown (KeyCode.A)) {

rightCrowdMemberAnimation.state.SetAnimation (0, "yay_07", true);

}

感谢您的帮助。

奇怪的是,在检查器中它说动画已经改变,但视觉上并没有改变。

注意:这就是我想要完成的。看起来当我在 LateUpdate 时,当我点击 A 时它正在重置回空闲状态。我仍然不确定为什么它不会改变下面的动画。我以为A键的技巧在执行上是相似的,但我想我错了。

void Start(){
    Assume I did a random roll of color {red,blue,yellow}
}

真正的问题是

void LateUpdate(){
     if (color = red) {
         rightCrowdMemberAnimation.state.SetAnimation (0, "idle_07", true);
     } else if (color = blue) {
         rightCrowdMemberAnimation.state.SetAnimation (0, "idle_08", true);
     } else if (color = yellow){
         rightCrowdMemberAnimation.state.SetAnimation (0, "idle_09", true);
     }
}

在检查器中,我想要显示的动画就在那里。只是我调用的动画没有出现。

基本上,您必须在 SkeletonAnimation 脚本上更改 属性 AnimationName。这是示例:

private SkeletonAnimation skeletonAnimation;

void Awake()
{
    skeletonAnimation = GetComponent<SkeletonAnimation>();
}

void LateUpdate(){
     if (color = red) {
         skeletonAnimation.AnimationName = "idle_07";
     } else if (color = blue) {
         skeletonAnimation.AnimationName = "idle_08";
     } else if (color = yellow){
         skeletonAnimation.AnimationName = "idle_09";
     }
}