首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地将对象场景依赖项与zenject统一注入

如何正确地将对象场景依赖项与zenject统一注入
EN

Stack Overflow用户
提问于 2022-04-28 22:29:59
回答 1查看 362关注 0票数 0

我有一个带有果树测试脚本的场景对象,它的接口我想要添加到依赖项中。为此,我使用标准的Zenject绑定脚本。然而,这是行不通的。请告诉我如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2022-04-28 22:55:57

您需要告诉容器如何处理这些依赖项。这是通过安装程序完成的。在安装阶段,您需要设置类与容器需要提供的实例之间的关系。我推荐阅读文档,这在本例中是非常好的。

对于MonoDehaviour的情况,您需要检查文档中的场景绑定部分。

代码语言:javascript
复制
public class Foo : MonoBehaviour
{
}
    
public class GameInstaller : MonoInstaller
{
    public Foo foo;
    
    public override void InstallBindings()
    {
        Container.BindInstance(foo);
        Container.Bind<IInitializable>().To<GameRunner>().AsSingle();
    }
}
    
public class GameRunner : IInitializable
{
    readonly Foo _foo;

    public GameRunner(Foo foo)
    {
        _foo = foo;
    }
    
    public void Initialize()
    {
        // ...
    }
}

就你的具体情况而言:

代码语言:javascript
复制
public class Fruit: Monobehaviour. IInitializable, ITickable {
    public void Initialize() {

    }
    public void Tick() {

    }
}

public class GameInstaller : MonoInstaller
{
    public Fruit fruit;

    public override void InstallBindings()
    {
        Container.BindInstance(fruit);
        Container.Bind<IInitializable>().To<Fruit>().AsSingle();
        Container.Bind<ITickable>().To<Fruit>().AsSingle();
    }
}

或者您也可以一次绑定所有接口:

Container.BindInterfacesTo<Fruit>().AsSingle();

您需要将GameInstaller添加到SceneContext组件中,以便安装程序与重写的InstallBindings()方法一起运行。

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

https://stackoverflow.com/questions/72050909

复制
相关文章

相似问题

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