我正在使用Zenject框架,并且在一个类中使用了多个GameObject,但我不知道如何使用Zenject Container来实现。这是我的代码:

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 Container注入(inject)这些对象?如果是的话,我该怎么办?

最佳答案

使用Zenject,这些类将被这样注入(inject):

[Inject]
GameObject _canvas;

[Inject]
GameObject _mainWindow;

[Inject]
GameObject _createAccountWindow;

但是,当您使用DI时,通常会根据类型进行注入(inject),因此将它们全部设为'GameObject'类型将使此操作变得困难。

但是,如果您做出这样的事情:
[Inject]
Canvas _canvas;

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

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

然后还将ZenjectBinding组件添加到每个组件中,并为ZenjectBinding的Identifier属性添加一个值,然后它应该可以工作。 (我假设它们在启动时已经在现场了)

关于c# - Zenject GameObject注入(inject),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39675451/

10-11 22:29
查看更多