在 Zenject 中多次调用方法绑定
Multiple calls for method binding in Zenject
我有一个使用方法注入的 MonoBehaviour :
[Inject]
private void Init(IFirst first, ISecond second)
{
_first = first;
_second = second;
StartService();
Debug.LogError("Should only appear once!");
}
出于某种原因,此方法被 Zenject 调用了两次,我不明白为什么。更糟糕的是:如果我向 class 添加一个 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。我检查了其他一些 classes,看起来不错。 class 仅添加到场景中的一个游戏对象。
我错过了 StartService 方法调用可能导致场景快速来回切换的事实(立即,所以我没有意识到它正在发生)。所以调用了几次inject方法,因为我多次进入这个场景。
也许这对其他人有帮助 :)
我有一个使用方法注入的 MonoBehaviour :
[Inject]
private void Init(IFirst first, ISecond second)
{
_first = first;
_second = second;
StartService();
Debug.LogError("Should only appear once!");
}
出于某种原因,此方法被 Zenject 调用了两次,我不明白为什么。更糟糕的是:如果我向 class 添加一个 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。我检查了其他一些 classes,看起来不错。 class 仅添加到场景中的一个游戏对象。
我错过了 StartService 方法调用可能导致场景快速来回切换的事实(立即,所以我没有意识到它正在发生)。所以调用了几次inject方法,因为我多次进入这个场景。 也许这对其他人有帮助 :)