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


发布于 2022-04-28 22:55:57
您需要告诉容器如何处理这些依赖项。这是通过安装程序完成的。在安装阶段,您需要设置类与容器需要提供的实例之间的关系。我推荐阅读文档,这在本例中是非常好的。
对于MonoDehaviour的情况,您需要检查文档中的场景绑定部分。
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()
{
// ...
}
}就你的具体情况而言:
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()方法一起运行。
https://stackoverflow.com/questions/72050909
复制相似问题