1

我收到一个ZenjectException: Unable to resolve 'Facade'. Object graph: 我无法理解的错误。

我一直在关注这个例子,但我无法让我的代码工作。

我有一个包含以下组件的预制件:

  • Facade
  • FacadeInstaller
  • Game Object Context(参考FacadeInstaller上述)

Facade班级:

using UnityEngine;
using Zenject;

public class Facade : MonoBehaviour
{
    public class Factory : PlaceholderFactory<Argument, Facade> { }
}

FacadeInstaller班级:

public class FacadeInstaller : MonoInstaller
{
    [Inject]
    Argument arg;

    public override void InstallBindings()
    {
        Container.BindInstance(arg);
    }
}

Argument班级:

public class Argument
{
    public string val;
}

在场景中,我有一个SceneContext引用以下安装程序:

using UnityEngine;
using Zenject;

public class SceneInstaller : MonoInstaller
{
    public GameObject prefab;

    public override void InstallBindings()
    {
        Container.BindFactory<Argument, Facade, Facade.Factory>()
            .FromSubContainerResolve()
            .ByNewContextPrefab<FacadeInstaller>(prefab);
    }
}

其中prefab在检查器中链接到我上面详述的那个。

如果我离开,场景验证成功。

现在,当我使用以下组件向场景添加另一个游戏对象时,问题就出现了:

using UnityEngine;
using Zenject;

public class Creator : MonoBehaviour
{
    [Inject]
    Facade.Factory factory;
}

并且场景验证失败并出现错误:

ZenjectException: Unable to resolve 'Facade'. Object graph: 

我的设置有什么问题?

4

0 回答 0