我是 Zenject 的新手,這是我使用此資產的第一個專案。我有注射問題!也許有人知道我做錯了什么或錯誤可能在哪里。在下面的代碼中,_spawnArea 未初始化。
public class BootstrapIniter : MonoInstaller
{
[SerializeField] private Camera _mainCamera;
[Space(10)]
[SerializeField] private Spawner _spawner;
public override void InstallBindings()
{
BindMain();
BindBallHandle();
}
private void BindMain()
{
Container.Bind<Camera>().FromInstance(_mainCamera).AsSingle();
}
private void BindBallHandle()
{
Container.Bind<Spawner>().FromInstance(_spawner).AsSingle();
}
}
[RequireComponent(typeof(SpawnArea))]
public class Spawner : MonoBehaviour
{
private SpawnArea _spawnArea;
private void Awake()
{
_spawnArea = GetComponent<SpawnArea>();
}
[Inject]
public void Construct(Camera camera)
{
Rect cameraRect = camera.pixelRect;
_spawnArea.Init(cameraRect);
}
}
預先感謝您尋找解決方案的答案或方向
uj5u.com熱心網友回復:
我認為您沒有注入您的實體。來自檔案“FromInstance - 將給定實體添加到容器中。請注意,在這種情況下不會注入給定實體。如果您還希望在啟動時注入實體,請參閱 QueueForInject”(QueueForInject 會將給定實體排隊等待構造初始物件圖后注入)。基本上,您需要注入您的實體才能執行注入的方法。
另一方面,我沒有看到從實體系結單一行為的意義,因為您必須生成實體將其系結到容器然后注入它。您有系結方法可以一次完成所有這些操作,請查看“構造方法”部分。
檢查示例: FromComponentInNewPrefabResource - 將給定的預制件(在給定的資源路徑中找到)實體化為新的游戲物件,在其上注入任何 MonoBehaviour,然后以與 GetComponentInChildren 作業類似的方式搜索結果型別的結果(因為它將回傳找到的第一個匹配值)。
請注意,要成功進行注入,您必須事先使用Container.Bind陳述句連接容器中的依賴項,以便容器知道需要注入什么以及如何注入。
我建議仔細閱讀非常好的檔案并按照示例進行操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408545.html
標籤:
下一篇:如何找到破壞我的物件的腳本?
