文档说,您可以轻松地在多个ScriptableObjectInstallers之间进行交换。而且我认为您可以通过在SceneContext中分配相同类的所需ScriptableObjectInstaller来实现。 但是,如果我要通过程序决定使用哪个设置实例,该怎么办?我需要以某种方式在场景上下文中以某种方式更改对SettingsInstaller的引用,然后再将其注入需要的地方吗?如果是这样,我该怎么办?
例如,我有两个相同的SettingsInstaller实例:SettingsEasy和SettingsHard。在注射之前,我如何以编程方式在它们之间切换?如果我在场景上下文中有该设置的2个实例,那么它将抛出以下错误:
ZenjectException:在构建类型为“ ClassWhereIInjectingIt”的对象时,如果预期类型“ MySettingsType”仅匹配一个,则会找到多个匹配项。
答案 0 :(得分: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/SettingsEasy
和Resources/SettingsHard
的路径中