Mathijs-Bakker / Extenject

Dependency Injection Framework for Unity Game Engine
MIT License
531 stars 97 forks source link

[Question] Injection on instantiated Scriptable Object from Game Object Context Installer #80

Open ATHellboy opened 1 year ago

ATHellboy commented 1 year ago

Hey guys, I'm stuck on something about Zenject/Extenject. Any one has any idea how I can fix that ? btw, sorry for filing an issue here, I can't get my answer from anywhere.

I have Player gameObject with Game Object Context which instantiate Character prefab by factory and Charcater has Game Object Context. In CharacterController which is a facade class on Character I instantiate a few Scriptable Objects in this way:

private readonly DiContainer _container;

public ZenjectResourceFactory(DiContainer container)
{
    _container = container;
}
public Object Instantiate(Object @object)
{
    Object instance = Object.Instantiate(@object);
    _container.QueueForInject(instance);
    return instance;
}

In the Character Installer CharacterBehavior and CharacterPowerup are bound by Container.Bind<CharacterBehaviorContext>().AsSingle().NonLazy(); and Container.Bind<CharacterPowerupContext>().AsSingle().NonLazy();

But the issue is CharacterBehavior and CharacterPowerup are not injected into those Scriptable Objects [Inject] methods.

L1247 commented 1 year ago

you need to use Bind instead of Instantiate then container will inject Scriptable Objects automatically.