Как правильно использовать IEnumerator, когда кнопка вызывает несколько функций - PullRequest
0 голосов
/ 06 сентября 2018

Я делаю карточную игру, в которой я пытаюсь сделать задержку (0,5f) перед созданием каждой карты. У меня есть мой код, который создает и объект

public IEnumerator Name(int x,int y, int z)
{

}    

В IEnum у меня есть yeild return new WaitForSeconds(0.5f) перед всем кодом с экземпляром.

Я вызываю свой IEnumerator в 2 разных классах по 2 раза в каждом с помощью

StartCoroutine(Name(...par...));

И на моей игровой кнопке у меня есть 4 события, которые используют enum для порождения карт, но задержки нет.

Есть ли способ заставить карты появляться по одной.

Спасибо за любую поддержку.

1 Ответ

0 голосов
/ 06 сентября 2018

Независимо от того, что в данный момент вызывает StartCoroutine, он должен быть сопрограммой.

Прямо сейчас у вас есть код, который выглядит / ведет себя так:

StartCoroutine(Name(...par...));
StartCoroutine(Name(...par...));
StartCoroutine(Name(...par...));
StartCoroutine(Name(...par...));

И все они порождают карты и не ждут друг друга. Вы не хотите этого, поэтому вам нужно будет внести фундаментальные изменения в то, как выполняются ваши звонки, чтобы вы могли получить такое поведение:

StartCoroutine(SomeMethod(...));

IEnumerator SomeMethod(...) {
    yield return Name(...par...)
    yield return Name(...par...)
    yield return Name(...par...)
    yield return Name(...par...)
}
...