我很清楚这可能不是问Zenject问题的最佳地方。我已经在Zenject google groups页面上发布了同样的问题。我在这里发布了这篇文章,认为在这里的某个人(不是google组的人)可以帮我解决问题。。
我有一个关于Zenject全球绑定的问题。
我的AR应用程序目前有几个不同的屏幕(保存为场景)。每个场景都可以自己运行,这样我就可以把它划分得很好。当我按下'Screen1‘上的一个按钮时,它会加载'Screen2’等等。我使用的是一个非常基本的AppDelegate,它包含一个NavigationController类,它处理所有UGUI转换,这样它就像一个基于iOS导航的普通应用程序。我在我所有的安装程序上将AppDelegate作为Singleton注入,但是由于每个屏幕(场景)都有单独的CompositionRoots,所以在全球范围内,它们并不是作为单元素注入的。
有办法这样做吗。在整个应用程序中都有一个单例注入,但是有不同的组合根?
如果没有,如何使用全局组合根?我按照指南中的说明创建了一个全局组合根目录,并将安装程序作为预制件添加到其中。我也从现场删除了安装程序。但当我玩的时候什么都不会发生。我是不是漏掉了一些明显的东西。
提前谢谢。
发布于 2017-03-30 06:56:36
在参考资料文件夹中,创建一个项目上下文预置如何使项目上下文预置。
你也绝对需要在你的场景中包含一个"SceneContext“。这就产生了第一个"ProjectContext“。
在创建该对象之后,它将在上加载任何场景。以及预置文件上提供的安装程序和可脚本对象安装程序。连同对单身汉的绑定(如:
Container.Bind<IFoo>().To<Foo>().AsSingle().NonLazy();这意味着,在zenject初始化时,您将准备好并等待单个子的实例。
https://stackoverflow.com/questions/31316054
复制相似问题