我有一个使用方法注入的MonoBehaviour:
[Inject]
private void Init(IFirst first, ISecond second)
{
_first = first;
_second = second;
StartService();
Debug.LogError("Should only appear once!");
}由于某些原因,这个方法被Zenject调用了两次,我不明白为什么。更糟糕的是:如果我向类添加一个Update方法,它不会做任何特殊的事情(也不会调用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。我查了一些其他的课程,看上去还不错。类只添加到场景中的一个游戏对象中。
发布于 2018-11-15 09:42:41
我忽略了这样一个事实,即StartService方法调用可能导致场景快速地来回切换(立即,因此我没有意识到它的发生)。所以注入方法被调用了好几次,因为我多次进入这个场景。也许这对其他人有帮助:)
https://stackoverflow.com/questions/53316170
复制相似问题