2016-10-24 11 views
0

私はしばらくこの部分で立ち往生していました。 私は同じテストの約12ラウンドを持っているプロジェクトを書いています。 だから、私は毎回異なるアバターを使って同じ機能を使いたいと思っています。forループを続ける前にイベントが終了するのを待つ

イベントが発生すると、発生すると起動するとFinishTestという名前の関数が呼び出されます FinishTestが起動されて終了するときだけループを継続します。

 for (int i = 0; i < numberOfAvatars; i++) { 
     StartTest(avatars[i]); // This is not really relevent to the question 
     //Wait until the FinishTest event is finished before continuing the loop 
    } 

私のモデルとオブジェクトの間にトリガーがあると、FinishTestがアクティブになります。 StartTestの前にFinishTestが終了する方法はありません。なぜなら、StartTestは基本的にモデルとそのことを説明していますから、FinishTestの前にStartTestが終了することを確認する方法はないと思います。関数の内部は何

は本当に問題ではなく、なぜしない:助けを

private void StartTest(GameObject avatar) { 
     Instantiate(avatar, new Vector3(2f,2f,2f), Quaterion.identity)); 
} 

private void FinishTest() 
{ 
    testsResults[testNumber] = new TestResult(avatarsName, holdingObject); 
     testsResults[testNumber].setTimeUntilAvatarGotShot(string.Format("{0:F2}",timer) 

}

感謝を。

+0

イベントを言うとき、あなたは実際にイベントを意味するか、 'for'ループを続ける前にそれぞれの' StartTest'呼び出しが終了するのを待つだけですか? – Programmer

+0

イベントが発生すると、別のイベントが発生し、それはFinishTestと呼ばれる同じスクリプト内の関数を呼び出します。実際の問題がFinishTestであるStartTestについて詳しく説明した理由はわかりません – NotSure

+0

どこが変更されていますか?なぜ質問を修正し、これを含めるのですか? – Programmer

答えて

1
bool TestFinished; 
IEnumerator RunTest() { 
    for (int i = 0; i < numberOfAvatars; i++) { 
     TestFinished = false; 
     StartTest(avatars[i]); // This is not really relevent to the question 

     //Wait until the FinishTest event is finished before continuing the loop 
     while (!TestFinished) yield return null; 
    } 
} 

private void FinishTest() 
{ 
    testsResults[testNumber] = new TestResult(avatarsName, holdingObject); 
    testsResults[testNumber].setTimeUntilAvatarGotShot(string.Format("{0:F2}",timer); 
    TestFinished = true; 
} 

あなたのコードのどこかにStartCoroutine(RunTest())があります。

+0

ありがとう:)偉大なwokred。私の間違いは、IEnumertorの中のforループの代わりに、カーチュンのためにやっていた – NotSure

関連する問題