文档说你可以轻松地在多个ScriptableObjectInstaller之间交换。我认为您可以通过在SceneContext中分配同一类的所需ScriptableObjectInstaller来做到这一点。 但是,如果我想按程序决定使用哪个设置实例,该怎么办?在我需要将设置注入到需要的位置之前,我是否需要以某种方式在场景上下文中程序更改对我的 SettingsInstaller 的引用?如果是这样,我该怎么做?
例如,我有 2 个相同设置安装程序的实例:设置简单和设置困难。如何在注射前以编程方式在它们之间切换?如果我在场景上下文中有该设置的 2 个实例,那么它会给我一个这样的错误:
ZenjectException:在构建类型为"ClassWhereIInjectingIt"的对象时,当类型"MySettingsType"只有一个匹配项时,发现多个匹配项。
以编程方式执行此操作的一种方法是从如下所示的资源路径进行安装:
public class GameSettingsInstaller : ScriptableObjectInstaller<GameSettingsInstaller>
{
public override void InstallBindings()
{
// ...
}
}
public class MainInstaller : MonoInstaller
{
public bool isHardDifficulty;
public override void InstallBindings()
{
GameSettingsInstaller.InstallFromResource(isHardDifficulty ? "SettingsHard" : "SettingsEasy", Container);
}
}
在这里,我假设它们被放置在一条看起来像Resources/SettingsEasy
和Resources/SettingsHard
的路径中