Процедурный обмен между несколькими экземплярами ScriptableObjectInstaller - PullRequest
0 голосов
/ 04 октября 2018

В документации сказано, что вы можете легко переключаться между несколькими ScriptableObjectInstallers.И я думаю, что вы делаете это, назначая необходимый ScriptableObjectInstaller того же класса в SceneContext.Но что, если я хочу процедурно решить, какой экземпляр настроек использовать?Нужно ли каким-то образом процедурно изменять ссылку на мой SettingsInstaller в контексте сцены, прежде чем вводить эти настройки там, где они мне нужны?Если да, то как мне это сделать?

Например, у меня есть 2 экземпляра одного и того же SettingsInstaller: SettingsEasy и SettingsHard.Как переключаться между ними программно перед инъекцией?Если бы у меня было 2 экземпляра этих настроек в контексте сцены, я получаю сообщение об ошибке:

ZenjectException: найдено несколько совпадений, когда при построении типа 'MySettingsType' ожидалось только одно совпадение.объект с типом 'ClassWhereIInjectingIt'.

1 Ответ

0 голосов
/ 07 октября 2018

Один из способов сделать это программно - это установить путь к ресурсу следующим образом:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...