C# 协同程序在WaitForSeconds期间执行代码
我正在生成预置并使用一个协同程序,但我可以看到预置之间的随机延迟或空格间隔,这是我在返回新的WaitForSeconds(2.3f)之前运行的函数的原因C# 协同程序在WaitForSeconds期间执行代码,c#,unity3d,game-development,C#,Unity3d,Game Development,我正在生成预置并使用一个协同程序,但我可以看到预置之间的随机延迟或空格间隔,这是我在返回新的WaitForSeconds(2.3f)之前运行的函数的原因 我计划执行函数get random number,并在WaitForSeconds()期间检查,而不是在它之前检查,以避免预置之间的随机空格间隔。WaitForSeconds在您所说的秒数内停止该方法的执行。 在此期间不能执行任何操作,这是WaitForSeconds试图避免的(执行代码) 您应该尝试完成代码,但如果延迟是由计算造成的,我建议您
我计划执行函数get random number,并在WaitForSeconds()期间检查,而不是在它之前检查,以避免预置之间的随机空格间隔。WaitForSeconds在您所说的秒数内停止该方法的执行。 在此期间不能执行任何操作,这是WaitForSeconds试图避免的(执行代码) 您应该尝试完成代码,但如果延迟是由计算造成的,我建议您在Start方法中创建一个生成的数字数组/列表,并使用该列表,而不是在“运行时”计算它。。。您可以在该列表上循环,或者每次用完数字时生成一个新的列表,您仍然可以避免生成该计算的多个实例,这样,您应该能够避免随机延迟
不过,请记住,我只看到了部分代码,因此无法确定延迟的原因。WaitForSeconds在您所说的秒数内停止该方法的执行。 在此期间不能执行任何操作,这是WaitForSeconds试图避免的(执行代码) 您应该尝试完成代码,但如果延迟是由计算造成的,我建议您在Start方法中创建一个生成的数字数组/列表,并使用该列表,而不是在“运行时”计算它。。。您可以在该列表上循环,或者每次用完数字时生成一个新的列表,您仍然可以避免生成该计算的多个实例,这样,您应该能够避免随机延迟
不过,请记住,我只看到了您的部分代码,因此我无法确定延迟的原因。对不起,我没有跟上。检查随机数与
WaitForSeconds
有什么关系?我只是想在coroutineth的等待期间运行一个函数,这正是等待不起作用的原因。您可能可以使用WaitWhile
或WaitUntil
使用lambda匿名函数来解决此问题,然后您必须手动计算时间。为什么不将此函数写入另一个协程,并在WaitForSeconds
之前启动该协程?对不起,我没有跟上。检查随机数与WaitForSeconds
有什么关系?我只是想在coroutineth的等待期间运行一个函数,这正是等待不起作用的原因。您可能可以使用WaitWhile
或WaitUntil
使用lambda匿名函数来欺骗它,然后您必须手动计算时间。为什么不将该函数写入另一个协程,并在WaitForSeconds
之前启动该协程?
IEnumerator SpawnObject()
{
while (true)
{
GameObject screenShape = (GameObject)Instantiate(screenlines, new Vector3(ShapespawnerObjPos.transform.localPosition.x, shapeposition[GetFirstIndexlistofIntShapePosition()], ShapespawnerObjPos.transform.localPosition.z), transform.rotation);
//function get random number with checking called here
yield return new WaitForSeconds(2.3f);
}
}