Unity3d Zenject全局绑定

Unity3d Zenject全局绑定,unity3d,Unity3d,我很清楚这可能不是问Zenject问题的最佳地方。我已经在Zenject谷歌群组页面上发布了同样的问题。我在这里发布这篇文章,是想有人在这里(不在谷歌群组中)可以帮助我。 我有一个关于Zenject全局绑定的问题 我的AR应用程序目前有几个不同的屏幕(另存为场景)。每一个场景都可以独立运行,这样我就可以把它划分得很细。当我按下“屏幕1”上的按钮时,它会加载“屏幕2”等等。我正在使用一个非常基本的AppDelegate,它包含一个NavigationController类,该类处理所有UGUI转换

我很清楚这可能不是问Zenject问题的最佳地方。我已经在Zenject谷歌群组页面上发布了同样的问题。我在这里发布这篇文章,是想有人在这里(不在谷歌群组中)可以帮助我。

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

我的AR应用程序目前有几个不同的屏幕(另存为场景)。每一个场景都可以独立运行,这样我就可以把它划分得很细。当我按下“屏幕1”上的按钮时,它会加载“屏幕2”等等。我正在使用一个非常基本的AppDelegate,它包含一个NavigationController类,该类处理所有UGUI转换,因此可以说它是一个基于iOS导航的普通应用。我将AppDelegate作为单例注入到我所有的安装程序中,但由于每个屏幕(场景)都有单独的合成根,所以从全局来看,它们不会作为单例注入

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

如果没有,如何使用全局合成根? 我按照指南中的说明创建了一个全局组合根目录,并将安装程序添加为一个预置等等。我也从现场删除了安装程序。但是当我玩的时候什么都没发生。我错过了一些明显的东西


提前感谢。

在您的资源文件夹中创建项目上下文预设

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

创建所述对象后,它将加载到任何场景开始。 以及预置上提供的安装程序和可脚本化对象安装程序。以及到单例的绑定,即:

Container.Bind<IFoo>().To<Foo>().AsSingle().NonLazy();
Container.Bind().To().AsSingle().NonLazy();

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

如果有人对答案感兴趣,请参阅