2017-04-24 2 views
0

私は統一プロジェクトに取り組んでいます。フェードインとフェードアウトのアニメーションでシーンを切り替えることも欲しいです。 アニメーションが完了し、それらにアクセスできますが、歩留まりとIenumerator関数をチュートリアルから操作していますが、動作させることができません。私はアニメーションが完了するまで一貫性を得るにはどうすればいいですか?

//from my animation script 
public IEnumerator fadeIn() 
{ 
    isFading = true; 
    animator.SetTrigger("FadeIn"); 
    while (isFading) 
    { 
     yield return new WaitForSeconds(3f); 
    } 
} 

// from my main menu script. 
public void btnPlay() 
{ 
    StartCoroutine(fadeIn()); 
    Debug.Log("AfterIn"); 
    SceneManager.LoadScene("playOptions"); 
    StartCoroutine(fadeOut()); 
    Debug.Log("AfterOut"); 
} 

IEnumerator fadeIn() 
{ 
    yield return StartCoroutine(animatorscript.fadeIn()); 
} 
IEnumerator fadeOut() 
{ 
    yield return StartCoroutine(animatorscript.fadeOut()); 
} 

私は質問を更新しました。しかし、私はそれを実行すると私はアニメーションを参照してください。それは次のシーンに直接向かい、デバッグメッセージは互いに直進します。

+0

タイトルがあなたの質問と一致しません - あなたはUnityを待っていますか?フェードアウトアニメーション? –

答えて

1

Coroutineを開始する場合は、と同じ方法で、このように呼び出す必要があります。StartCoroutine(fadeIn)

ですから、StartCoroutine

UPDATEの詳細については、を参照してくださいhere

public void btnPlay() 
{ 
    StartCoroutine(fadeIn); 
    SceneManager.LoadScene("playOptions"); 
    StartCoroutine(fadeOut); 
} 

を追加する必要があります:あなたの更新の質問に関しては、私はあなたがフェードイン、シーンをロードするために終了するまで待つしたいと仮定。

これと同じようなことがトリックです。

public void btnPlay() 
{ 
    StartCoroutine(SceneFadeAndLoad); 
} 

IEnumerator SceneFadeAndLoad() 
{ 
    yield return StartCoroutine(fadeIn); 
    SceneManager.LoadScene("playOptions"); 
    yield return StartCoroutine(fadeOut); 
} 
+0

また、コルーチンを使用するときに 'using System.Collections;'文も忘れないでください –

+0

それでも動作しません、 –

+0

私は質問を更新しました。 –

関連する問題