首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Zenject中多次调用方法绑定

在Zenject中多次调用方法绑定
EN

Stack Overflow用户
提问于 2018-11-15 09:26:13
回答 1查看 690关注 0票数 1

我有一个使用方法注入的MonoBehaviour:

代码语言:javascript
复制
    [Inject]
    private void Init(IFirst first, ISecond second)
    {
        _first = first;
        _second = second;
        StartService();
        Debug.LogError("Should only appear once!");
    }

由于某些原因,这个方法被Zenject调用了两次,我不明白为什么。更糟糕的是:如果我向类添加一个Update方法,它不会做任何特殊的事情(也不会调用Init!)突然,英特被叫了7次!更新并没有做任何花哨的事情:

代码语言:javascript
复制
    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。我查了一些其他的课程,看上去还不错。类只添加到场景中的一个游戏对象中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-15 09:42:41

我忽略了这样一个事实,即StartService方法调用可能导致场景快速地来回切换(立即,因此我没有意识到它的发生)。所以注入方法被调用了好几次,因为我多次进入这个场景。也许这对其他人有帮助:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53316170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档