1

文档说您可以轻松地在多个 ScriptableObjectInstaller 之间进行交换。而且我认为您可以通过在 SceneContext 中分配所需的同一类的 ScriptableObjectInstaller 来做到这一点。但是如果我想在程序上决定使用哪个设置实例呢?在将设置注入到我需要的位置之前,我是否需要以某种方式在场景上下文中更改对我的 SettingsInstaller 的引用?如果是这样,我该怎么做?

例如,我有 2 个相同的 SettingsInstaller 实例:SettingsEasy 和 SettingsHard。在注入之前如何以编程方式在它们之间切换?如果我在场景上下文中有 2 个该设置的实例,那么它会给我一个这样的错误:

ZenjectException:在构建类型为“ClassWhereIInjectingIt”的对象时,当只有一个类型为“MySettingsType”时,发现了多个匹配项。

4

1 回答 1

1

以编程方式执行此操作的一种方法是从如下资源路径安装:

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/SettingsEasyResources/SettingsHard

于 2018-10-07T12:42:54.113 回答