Zenject GameObject Injection

本文关键字:Injection GameObject Zenject | 更新日期: 2023-09-27 18:08:40

我正在使用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容器中注入这些对象?如果是,我怎么做呢?

Zenject GameObject Injection

使用Zenject,这些类将像这样被注入:

[Inject]
GameObject _canvas;
[Inject]
GameObject _mainWindow;
[Inject]
GameObject _createAccountWindow;

然而,当你使用DI时,它通常会基于类型进行注入,所以让它们都是"GameObject"类型会让这变得困难。

但是如果你把它变成这样:

[Inject]
Canvas _canvas;
[Inject(Id = "MainWindow")]
RectTransform _mainWindow;
[Inject(Id = "CreateAccountWindow")]
RectTransform _createAccountWindow;

然后还将ZenjectBinding组件添加到每个组件中,并为ZenjectBinding的Identifier属性添加一个值,然后它应该可以工作。