为什么" yield会返回新的WaitForEndOfFrame()"永远不会以批处理模式返回?

时间:2016-03-01 06:53:18

标签: testing unity3d integration-testing

我正在尝试使用统一测试工具包编写集成测试。

测试在编辑器中运行没有问题(在播放模式下)。

但是当我尝试从命令行运行集成测试时(在批处理模式中) WaitForEndOfFrame ,coroutine永远不会返回。

这是一个已知问题还是我错过了什么?

我使用以下命令来运行测试:

j=-1

2 个答案:

答案 0 :(得分:1)

在批处理模式下,Unity不会在编辑器中更新框架。来自他们的documentation

  
      
  • 在-batchmode下运行编辑器时,不能使用 WaitForEndOfFrame ,因为动画,物理和时间轴等系统   在编辑器中可能无法正常工作。这是因为在使用WaitForEndOfFrame时,Unity当前不更新这些系统。
  •   

答案 1 :(得分:-3)

如果你正在使用C#,它就不会工作。如果你使用JS它会。对于C#,你需要使用Coroutine,IEnumerable。

与时间WaitForSeconds和等等的Yielding调用相同。他们不支持Yielding for C#,因为Mono Unity3d只在MainThread上运行而且不能产生,因为你会得到App没有响应。另一方面,当JS正在工作时,它并没有完全停止调用,它正在停止自己的脚本。这就是为C#添加invoke方法以延迟的原因。