我正在尝试使用统一测试工具包编写集成测试。
测试在编辑器中运行没有问题(在播放模式下)。
但是当我尝试从命令行运行集成测试时(在批处理模式中) WaitForEndOfFrame ,coroutine永远不会返回。
这是一个已知问题还是我错过了什么?
我使用以下命令来运行测试:
j=-1
答案 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方法以延迟的原因。