Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在返回void的函数中使用yield WaitForSeconds()_C#_Unity3d_Wait_Void_Yield Return - Fatal编程技术网

C# 在返回void的函数中使用yield WaitForSeconds()

C# 在返回void的函数中使用yield WaitForSeconds(),c#,unity3d,wait,void,yield-return,C#,Unity3d,Wait,Void,Yield Return,我在比赛中有一种跳跃恐惧。我使用的是Unity 3D。 我的第一个功能是 public void ScareMe(Vector3 pos) { //it does some necessary irrelevant //stuff and then it invokes another function Invoke ("Smile",.2f); } 在我的另一个函数中,我想让一个对象在0.2毫秒内出现然后消失。 我用 但由于某种原因,只要函数返回的不是void,就永

我在比赛中有一种跳跃恐惧。我使用的是Unity 3D。 我的第一个功能是

public void ScareMe(Vector3 pos) {
    //it does some necessary irrelevant 
    //stuff and then it invokes another function
    Invoke ("Smile",.2f);
}
在我的另一个函数中,我想让一个对象在0.2毫秒内出现然后消失。 我用

但由于某种原因,只要函数返回的不是void,就永远不会调用函数Smile

有没有办法使用像收益率这样的东西,但绕过它,这样我就不必归还任何东西?
我在想一个像协同程序一样的循环?但是我不知道该怎么做。

如果我没记错的话,Unity的Invoke(func)只愿意在Javascript中启动一个协同程序,其中void和协同程序之间的区别不那么严格


我要做的是使用
start例程(Smile())并开始微笑,另一个
返回新的WaitForSeconds(0.2f),或者更好的方法是让微笑获取
float smileDelay
参数,并将其用于等待秒。

Thread.Sleep(ms)
。听起来像。如果你能解释一下你想要实现什么,那就更好了。你能告诉我们你想要实现什么(以及为什么)而不是告诉我们你是如何试图解决这个问题的吗?很可能有不同的方法来解决这个问题,但我们只能在知道实际问题是什么的情况下才能提供帮助。这必须在迭代器块中吗?否则您可以使用
wait Task.Delay(1000)。如果这没有帮助,请给我们更多的背景。我不知道你在抱怨什么,你所有的其他问题似乎都有答案。另外,在5条(现在是6条)不是你写的评论中,有3条是想帮你。
 IEnumerator Smile() {
     Object.SetActive(true);
     yield return new WaitForSeconds(0.2f);
     Object.SetActive(false);
 }