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 активируется, когда между моей моделью и некоторым объектом имеется триггер. Нельзя завершить FinishTest до начала теста, потому что StartTest basiccly запускает модель, и это не так, поэтому я не думаю, что должен быть какой-то способ убедиться, что StartTest заканчивается до FinishTest.

Что внутри функций не имеет большого значения, но почему бы не:

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

Когда вы говорите событие, вы действительно имеете в виду событие или просто хотите дождаться завершения каждого вызова 'StartTest', прежде чем продолжить цикл' for'? – Programmer

+0

есть отдельное событие, когда событие срабатывает, он вызывает функцию в том же скрипте, который называется FinishTest. Я не знаю, почему я подробно рассказал о StartTest, когда реальная проблема - FinishTest – 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; 
} 

then you StartCoroutine(RunTest()) где-то в вашем коде.

+0

Спасибо :) wokred out отлично. Моя ошибка заключалась в том, что вместо цикла for внутри IEnumertor выполнялась процедура for и, – NotSure

 Смежные вопросы

  • Нет связанных вопросов^_^