从coroutine播放的Unity动画

时间:2017-09-09 17:34:56

标签: c# animation unity3d coroutine

由于标题声明动画没有播放。告诉它播放的行是在协程中,代码在waitforseconds(3f)之前。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Play : MonoBehaviour {

public Animator AnimatorRef;
// Use this for initialization
void Start () {
    if (AnimatorRef == null)
    {
        AnimatorRef = GetComponent<Animator>();
    }

}

public void PlayGame()
{
    StartCoroutine(TitlePlay());
    Debug.Log("playing");
}

IEnumerator TitlePlay()
{
    Debug.Log("playing1");
    AnimatorRef.SetBool("Enlarge", true);
    yield return new WaitForSeconds(3f);
    Debug.Log("playing2");

    SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}

}

它抓住动画师参考文献并且所有三条评论都显示出来。

2 个答案:

答案 0 :(得分:1)

2注意事项。

  • 1st -

你检查过转换和AnimationController吗?

你可以打开AnimationController来查看bool在运行时是否发生了变化,如果你知道你的动画状态之间存在转换错误。

  • 第二 -

如果您注释掉“LoadScene”部分,那么动画会正确播放吗?

我怀疑动画bool由于某种原因不允许在整个方法运行之前执行它的动作,但可能是错误的。

答案 1 :(得分:0)

我的团结关闭没有保存,但它现在有效。如果有人有这个问题重制动画并确认你从初始动画,然后单击添加剪辑。然后它对我有用:)