Testing “为什么?”;返回新的WaitForEndOfFrame();永远不会以批处理模式返回?
我正在尝试使用unity测试工具包编写集成测试 测试在编辑器中运行时没有问题(在播放模式下) 但是当我尝试从命令行(在批处理模式下)运行集成测试时,WaitForEndOfFramecoroutine永远不会返回 这是一个已知的问题还是我遗漏了什么 我正在使用以下命令运行测试:Testing “为什么?”;返回新的WaitForEndOfFrame();永远不会以批处理模式返回?,testing,unity3d,integration-testing,Testing,Unity3d,Integration Testing,我正在尝试使用unity测试工具包编写集成测试 测试在编辑器中运行时没有问题(在播放模式下) 但是当我尝试从命令行(在批处理模式下)运行集成测试时,WaitForEndOfFramecoroutine永远不会返回 这是一个已知的问题还是我遗漏了什么 我正在使用以下命令运行测试: /Applications/Unity-5.3.1-f1/Unity.app/Contents/MacOS/Unity \ -batchmode \ -nographics \ -logfile \ -
/Applications/Unity-5.3.1-f1/Unity.app/Contents/MacOS/Unity \
-batchmode \
-nographics \
-logfile \
-projectPath $(pwd) \
-executeMethod UnityTest.Batch.RunIntegrationTests \
-testscenes=TestScene \
-resultsFileDirectory=$(pwd)
如果您使用的是C#,它将不起作用。如果你使用JS,它会。对于C#您需要使用Coroutine,对于这一点,IEnumerable
与对Time WaitForSeconds等的让步调用相同。它们不支持对C#的让步,因为Mono Unity3d只在主线程上运行,不能让步,因为您将得到的应用程序没有响应。另一方面,当JS工作时,它并不是完全停止调用,而是停止自己的脚本。这就是为什么在C#中添加invoke方法来延迟的原因。Unity在批处理模式下不更新编辑器中的帧。从他们的:
- 在使用-batchmode运行编辑器时,不能使用WaitForEndOfFrame,因为系统喜欢动画、物理和时间线 可能无法在编辑器中正常工作。这是因为Unity当前在使用WaitForEndOfFrame时不会更新这些系统
问题是为什么
WaitForEndOfFrame
在批处理模式下不能按预期工作。这个答案根本不能回答这个问题。看起来像是一个bug:这里有一些代码(据推测)修复了集成测试使用的问题:啊-现在文档中有一些地方。这只是说明它在批处理模式下不工作。现在不能用谷歌搜索,但记得最近读过。