程序化地在 ScriptableObjectInstaller 的多个实例之间交换
Swap between multiple instances of ScriptableObjectInstaller procedurally
文档说您可以轻松地在多个 ScriptableObjectInstaller 之间切换。我认为您可以通过在 SceneContext 中分配相同 class 所需的 ScriptableObjectInstaller 来做到这一点。
但是,如果我想在程序上决定使用哪个设置实例怎么办?在将设置注入我需要的设置之前,我是否需要以某种方式在场景上下文中以某种方式更改对我的 SettingsInstaller 的引用?如果是这样,我该怎么做?
例如,我有两个相同的 SettingsInstaller 实例:SettingsEasy 和 SettingsHard。我如何在注入前以编程方式在它们之间切换?如果我在场景上下文中有 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
的路径中
文档说您可以轻松地在多个 ScriptableObjectInstaller 之间切换。我认为您可以通过在 SceneContext 中分配相同 class 所需的 ScriptableObjectInstaller 来做到这一点。 但是,如果我想在程序上决定使用哪个设置实例怎么办?在将设置注入我需要的设置之前,我是否需要以某种方式在场景上下文中以某种方式更改对我的 SettingsInstaller 的引用?如果是这样,我该怎么做?
例如,我有两个相同的 SettingsInstaller 实例:SettingsEasy 和 SettingsHard。我如何在注入前以编程方式在它们之间切换?如果我在场景上下文中有 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