在扩展SceneTestFixture的类中,如何在场景测试期间切换场景?
我需要在扩展SceneTestFixture时做一个测试用例,其中在测试期间我加载了场景'A'并将其设置为ProjectContext,然后在同一测试开关中将其设置为场景'B'并让其测试是否设置了条件按'A',如果不返回'A'。
如果我尝试按照Zenject文档使用LoadScene(),则无法重用它来切换到下一个场景。加载添加剂不是我所需要的,因此不要使用LoadScenes(),并且如果我使用LoadScene()加载“ A”,但是通过标准Unity SceneManager切换到另一个场景,那么SceneContainer不会更新到新场景而且我不知道如何更新它。这是我的代码失败和流程流向的示例:
yield return LoadScene("SceneA");
AClass aclass = Container.Resolve...
Assert.IsNotNull(aclass);// and I can access this aclass, but then:
aclass.OnChange_SceneB();// in scene 'A' switch by standard Unity SceneManager
yield return null;
BClass bclass = Container.Resolve...// I expected that Container will auto-update, but...
// error: resolve failed!
我到了SceneTestFixture here的源头,但是我不知道如何将Container重新加载到新的SceneContext?
答案 0 :(得分:1)
这是Zenject的SceneTestFixture类的问题。它假定场景在当前运行时不会改变。我为此添加了一个问题here。同时,您可以通过执行以下操作来获取当前场景的场景上下文:
yield return LoadScene("FirstScene");
yield return new WaitForSeconds(2.0f);
var newSceneContainer = ProjectContext.Instance.Container.Resolve<SceneContextRegistry>()
.SceneContexts.Single().Container;
newSceneContainer.Resolve<Foo>();