当按钮调用多个功能时如何正确使用IEnumerator

时间:2018-09-05 23:12:37

标签: c# unity3d unityscript coroutine ienumerator

我正在制作一个纸牌游戏,其中我尝试在实例化每张纸牌之前进行(0.5f)延迟。我有实例化的代码和对象

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

在IEnum中,在带有实例化的所有代码之前,我有一个yeild return new WaitForSeconds(0.5f)

我分别使用StartCoroutine(Name(...par...));在2个不同的类中分别两次调用IEnumerator

在我的游戏按钮上,我有4个事件,这些事件使用枚举生成卡,但没有延迟。

有没有一种方法可以使卡片一张一张出现。

感谢您的支持。

1 个答案:

答案 0 :(得分:2)

无论当前调用StartCoroutine的是什么,都必须是协程。

现在,您的代码看起来/行为如下:

let alert = UIAlertController(title: "Succesful", message: "Successfully added!", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
let uivc = self.storyboard!.instantiateViewController(withIdentifier: "FourthViewController")
self.navigationController!.pushViewController(uivc, animated: true)

他们所有人都在生成卡片,而不是互相等待。您不希望这样,因此您将需要对通话方式进行根本性的更改,以便获得以下行为:

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