Zenject游戏对象注入

5

我正在使用Zenject框架,并且我正在为一个类使用多个GameObject,但是我不知道如何使用Zenject容器进行操作。以下是我的代码:

private GameObject _canvas;
private GameObject _mainWindow;
private GameObject _createAccountWindow;

void Awake()
{
    _mainWindow = GameObject.FindGameObjectWithTag("MainWindow");
    _canvas = GameObject.FindGameObjectWithTag("Canvas");
    _createAccountWindow = GameObjectExtensions.FindObject(_canvas, "CreateAccountWindow");
}

能否从Zenject容器中注入这些对象?如果可以,我该怎么做?

1个回答

4
使用Zenject,这些类将会被注入如下所示:
[Inject]
GameObject _canvas;

[Inject]
GameObject _mainWindow;

[Inject]
GameObject _createAccountWindow;

然而,在使用依赖注入时,通常会基于类型进行注入,因此使它们全部成为“GameObject”类型将使这变得困难。

但是,如果您将其设置为以下内容:

[Inject]
Canvas _canvas;

[Inject(Id = "MainWindow")]
RectTransform _mainWindow;

[Inject(Id = "CreateAccountWindow")]
RectTransform _createAccountWindow;

然后,还需要将ZenjectBinding组件添加到它们的每个组件中,并为ZenjectBinding的标识符属性添加一个值,这样就可以工作了。(我假设它们已经在启动时出现在场景中)


2
有没有一种方法可以通过构造函数或方法注入而不是属性注入来注入带有ID的游戏对象? - Nikolai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接