2016-10-07 15 views
2

私のゲームでは、私は新しいゲームを開始する(別のシーンをロードする)メイン・メニューを持っており、以下のスクリプトを実行します。しかし、メインメニューに戻って新しいゲームをやり直すと、以下のスクリプトは機能しません。私はスタート関数内コルーチンを止めようとしたが、それはコルーチンはもう一度動作しません

private IEnumerator OpenCloseEyesAnimation() 
{ 
    if (!isOpenEyesAnimationStarted) 
    { 
     isOpenEyesAnimationStarted = true; 
     openCloseEyes.OpenCloseDoor(); // this work 1st and 2nd time 
     yield return new WaitForSeconds(6.0f); // this line don't work 2nd time 
     stepNumber++; 
     isOpenEyesAnimationStarted = false; 
    } 
} 

を助けていない私は、あなたが適切な場所でStopCoroutineを使用する必要があるの

enter image description here

+1

あなたはこの関数を呼び出している:

private IEnumerator OpenCloseEyesAnimation() { if (!isOpenEyesAnimationStarted) { isOpenEyesAnimationStarted = true; openCloseEyes.OpenCloseDoor(); yield return new WaitForSeconds(6.0f); // this line don't work after second launch stepNumber++; isOpenEyesAnimationStarted = false; } } 

Commment言及(@Paradoxフォージ)は、あなたのUpdateEventはコードを更新したよう

? – Nestoraj

+1

メインメニューに行くときにブール値をリセットするか、メインメニューに行く前に6秒以上待つか(ブールはまだリセットされていません)、6秒以内にメニューを開いて閉じると、 ? –

+0

@Nestoraj私は一度更新でそれを呼び出します – dima

答えて

3

Update関数の内部で一度それを呼び出します。コルーチンを起動するたびに、最初に停止します。

case 3: 
    StopCoroutine(OpenCloseEyesAnimation()); 
    isOpenEyesAnimationStarted = false; 
    StartCoroutine(OpenCloseEyesAnimation()); 
+2

2回目の呼び出し時に 'isOpenEyesAnimationStarted'が' true'に設定されていないと動作しません。 –

+0

いいえ、助けにならず、isOpenEyesAnimationStarted = falseです。 WaitForSecondsが2回目に動作する前の行 – dima

+1

@dima更新された回答を確認してください。 –

関連する問題