Zenject 全局绑定

hds*_*evi 2 unity-game-engine

我很清楚这可能不是提出 Zenject 问题的最佳地点。我已经在 Zenject 谷歌群组页面上发布了同样的问题。我在这里发帖是想在这里的人(不在谷歌群组中)可能会帮助我。

我有一个关于 Zenject 全局绑定的问题。

目前我的 AR 应用有几个不同的屏幕(保存为场景)。每个场景都可以单独运行,这样我就可以将其划分得很清楚。当我按下“Screen1”上的按钮时,它会加载“Screen2”等等。我正在使用一个非常基本的 AppDelegate,它包含一个 NavigationController 类,该类处理所有的 UGUI 转换,因此它可以说是一个普通的基于 iOS 导航的应用程序。我在我拥有的所有安装程序上都将 AppDelegate 作为单例注入,但是由于各个屏幕(场景)都有单独的 CompositionRoots,因此在全局范围内它们不会作为单例注入。

有没有办法做到这一点。在整个应用程序中进行单例注入但具有不同的组合根?

如果没有,如何使用全局组合根?我已按照指南中的说明创建全局组合根并将安装程序添加为预制件等等。我也从场景中删除了安装程序。但是当我玩时什么也没有发生。我在这里遗漏了一些明显的东西。

提前致谢。

小智 5

在您的资源文件夹中创建一个项目上下文预制 如何制作项目上下文预制

您还绝对必须在场景中包含“SceneContext”。这产生了第一个“ProjectContext”。

创建所述对象后,它将在任何场景开始时加载。以及预制件上提供的安装程序和可编写脚本的对象安装程序。以及与单身人士的绑定,即:

Container.Bind<IFoo>().To<Foo>().AsSingle().NonLazy();
Run Code Online (Sandbox Code Playgroud)

这意味着,在 zenject 初始化时,您将有一个准备好并等待的单例实例。