Несколько вызовов для привязки метода в Zenject - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть MonoBehaviour, который использует внедрение метода:

    [Inject]
    private void Init(IFirst first, ISecond second)
    {
        _first = first;
        _second = second;
        StartService();
        Debug.LogError("Should only appear once!");
    }

По какой-то причине этот метод дважды вызывается Zenject, и я не понимаю, почему.Еще хуже: если я добавлю в класс метод Update, который не делает ничего особенного (и НЕ вызывает Init!), Внезапно Init вызывается 7 раз!Обновление не делает ничего особенного:

    private void Update()
    {
        //return;  <-- if this is added, init gets called 2 times by zenject, otherwise 7 times
        if (someFlag)
        {
            SomeGlobalField = "something"
            someflag = false;
        }
        if (!SomeGlobalField.Equals(SomeOtherGlobalField))
        {
            SomeOtherGlobalField = SomeGlobalField;
            StartService();
        }
    }

Единственное соединение между ними заключается в том, что они оба вызывают StartService, который опять не делает ничего особенного, просто вызывает метод в одном из введенных полей.

Может кто-нибудь просветить меня, что здесь происходит?Я использую ProjectContext.Я проверил некоторые другие классы, которые казались хорошими.Класс добавляется только к одному игровому объекту в сцене.

1 Ответ

0 голосов
/ 15 ноября 2018

Я упустил тот факт, что вызов метода StartService может вызвать быстрое переключение сцены назад и вперед (немедленно, чтобы я не знал об этом). Таким образом, метод инъекции был вызван несколько раз, потому что я входил в эту сцену несколько раз. Может быть, это помогает кому-то еще :)

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