У меня есть 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.Я проверил некоторые другие классы, которые казались хорошими.Класс добавляется только к одному игровому объекту в сцене.