我的游戏中有一个惊吓。我正在使用Unity 3D。 我的第一个功能是
public void ScareMe(Vector3 pos) { //it does some necessary irrelevant //stuff and then it invokes another function Invoke ("Smile",.2f); }
在我的另一个函数中,我想让一个对象出现,然后在0.2毫秒内消失。 我使用
IEnumerator Smile() { Object.SetActive(true); yield return new WaitForSeconds(0.2f); Object.SetActive(false); }
但由于某种原因,只要函数返回了除void以外的其他值,就不会调用Smile函数。
有什么方法可以使用收益率之类的东西,但要绕过它,这样我就不必返回任何东西了吗? 我在想一段时间的循环,就像是一次合作?但我不知道该怎么做。
如果我没记错的话,Unity的Invoke(func)只愿意在Javascript中启动一个协同程序,其中void和协同程序之间的区别不那么严格。
我要做的是 StartCoroutine(Smile()); 开始和另一个人微笑 yield return new WaitForSeconds(0.2f); ,或者最好让微笑接受 float smileDelay 参数,并将其用于WaitForSeconds。
StartCoroutine(Smile());
yield return new WaitForSeconds(0.2f);
float smileDelay