Search Unity

[RELEASED] Zenject Dependency Injection Framework

Discussion in 'Assets and Asset Store' started by eventropy, Jun 3, 2014.

  1. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    What does MySecondClass look like?
     
  2. Raidenwins

    Raidenwins

    Joined:
    Dec 18, 2012
    Posts:
    111
    It looks like this:

    Code (CSharp):
    1. public class MySecondClass : MonoBehaviour
    2. {
    3.     MyClass _myClass;
    4.  
    5.     [Inject]
    6.     public void Initialize(MyClass myClass)
    7.     {
    8.         _myClass = myClass;
    9.     }
    10.  
    11.     public void DoStuff()
    12.     {
    13.     }
    14. }
     
  3. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    Oh yes I see the issue now. There is nothing bound to MyClass. If you want to bind both the interface and the concrete type then you have to do this kind of thing instead:

    Container.Bind(typeof(IMyInterface), typeof(MyClass))
    .To<MyClass>()
    .AsSingle()
     
  4. Raidenwins

    Raidenwins

    Joined:
    Dec 18, 2012
    Posts:
    111
    This is what I did and it's still not working:

    Code (CSharp):
    1. public class MyClass : MonoBehaviour, IMyInterface
    2. {
    3. }
    4.  
    5. public class MySecondClass : MonoBehaviour
    6. {
    7.     IMyInterface _myClass;
    8.  
    9.     [Inject]
    10.     public void Initialize(IMyInterface myClass)
    11.     {
    12.         _myClass = myClass;
    13.     }
    14.  
    15.     public void DoStuff()
    16.     {
    17.         _myClass.DoSomething();
    18.     }
    19. }
    20.  
    21. public class MyInstaller : MonoInstaller<MyInstaller>
    22. {
    23.     Container.Bind<MySecondClass> ().FromNewComponentOnNewGameObject().AsSingle().NonLazy();
    24.  
    25.     Container.Bind(typeof(IMyInterface), typeof(MyClass))
    26.         .To<MyClass>()
    27.         .AsSingle()
    28.         .WhenInjectedInto<MySecondClass>();
    29. }
    I tried without the WhenInjectedInto<MySecondClass>() part and it didn't make a difference.
     
    Last edited: Apr 20, 2018
  5. milkcorp

    milkcorp

    Joined:
    Feb 26, 2012
    Posts:
    11
    Hi,

    I'm working on photon network project with Zenject.
    I got a error and I couldn't solve it.
    How can I fix this?

    There is two game objects in the scene.

    *Player
    It has Player.cs and it add to Zenject binding .

    *PlayerVehicle
    The transform add to Zenject binding.

    *The error message
    ZenjectException: Unable to resolve type 'UnityEngine.Transform' while building object with type 'PlayerVehicle'.



    Code (CSharp):
    1. public class NetworkFactory : IFactory<string, GameObject>
    2. {
    3.     [Inject]
    4.     private DiContainer m_container = null;
    5.  
    6.     public GameObject Create(string prefabName)
    7.     {
    8.        var go = PhotonNetwork.Instantiate(prefabName, new Vector3(0, 0, 0), Quaternion.identity, 0);
    9.        m_container.InjectGameObject(go);
    10.  
    11.        return go;
    12.     }
    13. }
    14.  
    15. public class GameInstaller : MonoInstaller<GameInstaller>
    16. {  
    17.     public override void InstallBindings()
    18.     {
    19.        Container.BindInterfacesTo<PlayerSpawnManager>().AsSingle();
    20.        Container.Bind<NetworkFactory>().AsSingle();
    21.     }
    22. }
    23.  
    24. public class PlayerSpawnManager : IInitializable {
    25.  
    26.     NetworkFactory _factory;
    27.  
    28.     public void Initialize()
    29.     {
    30.        var player = _factory.Create("Player");
    31.     }
    32.  
    33.     public PlayerSpawnManager(NetworkFactory factory)
    34.     {
    35.       _factory = factory;
    36.     }
    37. }
    38.  
    39. public class Player : MonoBehaviour{
    40.  
    41.     public Transform vehiclePosition;
    42.  
    43. }
    44.  
    45. public class PlayerInstaller : MonoInstaller<PlayerInstaller>
    46.  
    47. {
    48.     public override void InstallBindings()
    49.     {
    50.        //Container.Bind<Player>().AsSingle();
    51.        Container.BindInterfacesTo<PlayerVehicleSpawnManager>().AsSingle();
    52.        Container.BindInterfacesAndSelfTo<PlayerVehicle>().AsSingle();
    53.  
    54.     }
    55. }
    56.  
    57. public class PlayerVehicleSpawnManager : IInitializable
    58. {
    59.  
    60.     NetworkFactory _factory;
    61.  
    62.     public void Initialize()
    63.     {
    64.  
    65.        var playerVehicle = _factory.Create("Car");
    66.  
    67.     }
    68.     public PlayerVehicleSpawnManager(NetworkFactory factory)
    69.     {
    70.        _factory = factory;
    71.     }
    72. }
    73.  
    74. public class PlayerVehicle
    75. {
    76.  
    77.     Player _player;
    78.     Transform _transform;
    79.  
    80.     PlayerVehicle(Player player, Transform transform)
    81.     {
    82.        _player = player;
    83.        _transform = transform;
    84.        _transform.SetParent(_player.vehiclePosition);
    85.     }
    86. }
     
  6. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    You've probably moved on since it's been a month later, but I tried your code now and found it worked fine after adding FromNewComponentOnNewGameObject to the MyClass binding
     
  7. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    It's still unclear to me how you have this set up. Where is PlayerInstaller being installed? Do you have a GameObjectContext on Player prefab? Also, I'm not that familiar with Photon but doesn't Photon.Instantiate cause the game object to be instantiated on any connected clients as well? In which case the inject would not happen? You might consider using ZenAutoInjecter on the prefab to solve that (see docs)
     
  8. milkcorp

    milkcorp

    Joined:
    Feb 26, 2012
    Posts:
    11
    Hi eventropy,
    Thank you for replying.

    Yes, Player prefab has PlayerInstaller and GameObjectContext.
    I tested your code but I got a error.
    *Instantiator should not be used to create new mono behaviours. Must use InstantiatePrefabForComponent, InstantiatePrefab, or InstantiateComponent.

    I think it's because of it's instantiated by PhotonNetwork.Instantiate instead of Factory.
    (It's Same things like Instantiate(Resources.Load("Player"), Vector3.zero, Quaternion.identity))

    >Photon.Instantiate cause the game object to be instantiated on any connected clients as well?
    Yes.

    >In which case the inject would not happen?
    Yes. Maybe...

    I also tried ZenAutoInjecter but I couldn't resolve the inject.
    *ZenjectException: Unable to resolve type ...

    Can I inject to each other of two Instantiated game objects with class?
    like this.

    Thanks,
    Code (CSharp):
    1. public class TestGamenstaller : MonoInstaller<TestGamenstaller>
    2. {
    3.     public override void InstallBindings()
    4.     {
    5.         //it has Class A zenject binding, auto inject.
    6.         Instantiate(Resources.Load("ClassA"), Vector3.zero, Quaternion.identity);
    7.         //it has Class B zenject binding, auto inject.
    8.         Instantiate(Resources.Load("ClassB"), Vector3.zero, Quaternion.identity);
    9.     }
    10. }
    11.  
    12. ublic class ClassA : MonoBehaviour {
    13.  
    14.     ClassB _classB;
    15.  
    16.     [Inject]
    17.     public void Initialize(ClassB classB)
    18.     {
    19.         _classB = classB;
    20.     }
    21. }
    22.  
    23. public class ClassB : MonoBehaviour {
    24.  
    25.     ClassA _classA;
    26.  
    27.     [Inject]
    28.     public void Initialize(ClassA classA)
    29.     {
    30.         _classA = classA;
    31.     }
    32. }
     
  9. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    I'm not sure what you mean when you say you tested my code - I didn't provide any code.

    Based on the new code you posted though - You shouldn't instantiate things during the install phase. If you're going to create a test where you call GameObject.Instantiate you should do it in an Initializable.Initialize method or a MonoBehaviour.Start method

    It sounds like you need to sort out the 'Unable to resolve type' errors. That means that injection is happening but zenject can't find bindings for all the [Inject] data in the MonoBehaviours
     
  10. milkcorp

    milkcorp

    Joined:
    Feb 26, 2012
    Posts:
    11
    Hi eventropy,

    oops, I misunderstood.
    I need more research for zenject and photon.
    I don't know the spawned objects via network could has inject and binding.

    thanks,
     
  11. ludum_mubul

    ludum_mubul

    Joined:
    Dec 9, 2016
    Posts:
    18
    Hello!

    Can someone help me with injection MonoBehaviour inherited class in standard C# class?
    Because I'm receiving null ref on that MonoBehaviour class. But when I inject this monobehaviour into different monobehaviour, it's working fine.
    SceneContext is on scene, of course.
    What I'm missing or doing wrong?

    Code (CSharp):
    1. public class Installer : MonoInstaller<Installer>
    2.     {
    3.  
    4.         [SerializeField]
    5.         Player player;
    6.  
    7.         [SerializeField]
    8.         GameSettings gameSettings;
    9.        
    10.         public override void InstallBindings()
    11.         {
    12.  
    13.             Container.BindInstance(player).AsSingle();
    14.             Container.BindInstance(gameSettings).AsSingle();
    15.  
    16.             Container.Bind<TimingTapModel>().AsSingle().NonLazy();
    17.             Container.Bind<DirectionModel>().AsSingle().NonLazy();
    18.         }
    19.  
    20.     }

    Player is mono behaviour script
    Code (CSharp):
    1. public class TestScript
    2. {
    3.  
    4.     [Inject]
    5.     private Player player;
    6.  
    7.     [Inject]
    8.     private TimingTapModel tapInput;
    9.  
    10.     public Vector3 GetPlayerCurrentSpeed()
    11.     {
    12.         return player.copterCore.currentSpeed;
    13.     }
    14.  
    15.     public float GetCoreCurrentSpeed()
    16.     {
    17.         return tapInput.TotalTime;
    18.     }
    19. }
     
  12. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    It shouldn't matter if it's being injected into a monobehaviour or a non monobehaviour. Can you reduce it down to a complete small example?
     
  13. ludum_mubul

    ludum_mubul

    Joined:
    Dec 9, 2016
    Posts:
    18
    What you mean "reduce it down"?
     
  14. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    If you think you've found a bug with zenject, it's much easier for me to help if you can provide an MRE (minimal reproducible example) rather than posting excerpts from your project. So all the code necessary to reproduce it and ideally the smallest amount of code needed to do so. Sometimes I can guess based on the excerpts but not in this case. I could try and reconstruct a small example based on what you said, but chances are it would work as expected. By reducing it down to an MRE it also will ensure that the cause is not something outside of zenject like in one of your classes somehow
     
  15. Raidenwins

    Raidenwins

    Joined:
    Dec 18, 2012
    Posts:
    111
    Yea, I went with a different approach, but thanks for the reply anyway. I may have need for something like this again, so I'll probably try what you suggested.
     
  16. olegzheleztsov

    olegzheleztsov

    Joined:
    Oct 15, 2017
    Posts:
    9
    Hello, i am new in zenject. The most important question is how to install objects in the container that should not be destroyed when changing the active scene.
    I have simple setup



    GameController must exists across all scenes in game ( DontDestroyOnLoad(gameObject) ), but when LoadScene() zenject remove GameController. How tell zenject don't destroy it and how manage such objects?
     
  17. Maeslezo

    Maeslezo

    Joined:
    Jun 16, 2015
    Posts:
    93
    Hello,

    Nested container are very useful

    In the documentation, you can find this:
    Code (CSharp):
    1. public class TestInstaller : MonoInstaller
    2. {
    3.     public override void InstallBindings()
    4.     {
    5.         Container.BindInterfacesTo<GameController>().AsSingle();
    6.         Container.Bind<Greeter>().FromSubContainerResolve().ByMethod(InstallGreeter).AsSingle();
    7.     }
    8.  
    9.     void InstallGreeter(DiContainer subContainer)
    10.     {
    11.         subContainer.Bind<Greeter>().AsSingle();
    12.         subContainer.BindInstance("Hello world!");
    13.     }
    14. }
    The great thing about this it's that you can use Greeter as Facade for the rest of the code.

    I have been trying to the same with scene parenting. The piece I am missing is the facade part.
    I would to do something like this:
    Code (CSharp):
    1. Container.Bind<Greeter>().FromSubContainerLoadSceneAdditive(newScene);
    In that way I could load a scene and resolve the bind by the scene context of the new scene.

    Why this? Because I have a very complex system with their dependencies, but I want the rest of the project to use the system by a Facade. I know I can use the subcontainer bind, but it is much cleaner for me with a stand-alone scene.

    Thank you
     
  18. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    FromSubContainerLoadSceneAdditive is a great idea. I can definitely see how it would be useful, but I don't think it can work, because the new scene cannot be loaded synchronously. There is a non-async SceneManager.LoadScene method, but the scene is not actually started until the next frame.

    So I think the best way to do it would be something like this instead:
    Code (CSharp):
    1.  
    2.     public class Test
    3.     {
    4.         SceneContextRegistry _contextRegistry;
    5.  
    6.         public Test(SceneContextRegistry contextRegistry)
    7.         {
    8.             _contextRegistry = contextRegistry;
    9.         }
    10.  
    11.         public async Task<MyFacadeClass> LoadSceneAndGetFacade()
    12.         {
    13.             var scene = SceneManager.GetSceneByName("NewScene");
    14.  
    15.             await SceneManager.LoadSceneAsync(scene.name);
    16.  
    17.             return _contextRegistry.GetContainerForScene(scene).Resolve<MyFacadeClass>();
    18.         }
    19.     }
    20.  
    Or, if you don't want to inject SceneContextRegistry you could also get it by doing
    Code (CSharp):
    1. ProjectContext.Instance.Container.Resolve<SceneContextRegistry>()
    . Also, if you're not using async-await you can do a coroutine equivalent.
     
    Maeslezo likes this.
  19. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    I suppose you could also inject Task<MyFacadeClass> directly into the initial object graph too, and then use FromMethod with something like that above, which would basically function very similarly to FromSubContainerLoadSceneAdditive. You could also use ZenSceneLoader to force the new scene to be a child of the current scene too (with the above example you'd have to set up scene contract parents for it to be that way)

    You could write an extension method that did that, I think that'd be pretty neat
     
  20. Maeslezo

    Maeslezo

    Joined:
    Jun 16, 2015
    Posts:
    93
    I see the problem here. I will try your suggestion.

    Thank you very much!
     
  21. Raidenwins

    Raidenwins

    Joined:
    Dec 18, 2012
    Posts:
    111
    I have been using Zenject for a couple of years now and so far everything has been working fine. However, yesterday i upgraded to Unity 2018 3.3.f1 which comes with Visual Studio 2017 Community edition. Well i am having the following problem today. My solution won't compile because I am getting the following error in GameObjectContextEditor:

    "The type or namespace name 'GameObjectContext' could not be found..." (attachment 1).

    The problem is that class GameObjectContextEditor is in project Zenject-Editor and GameObjectContext is in project Assembly-CSharp. Because Assembly-CSharp already depends on Zenject-Editor I can't add a dependency to Assembly-CSharp in Zenject-Editor as that would create a circular dependency (attachment 2).

    This was never a problem in MonoDevelop, btw. Also, i updated to the latest version of Zenject from the Unity Asset Store today.

    How can I resolve this problem?
     

    Attached Files:

  22. makeshiftwings

    makeshiftwings

    Joined:
    May 28, 2011
    Posts:
    3,298
    There should be a file in the base Zenject folder called zenject.asmdef that makes Zenject compile in its own project rather than Assembly-Csharp. Maybe you deleted or missed that file by accident?
     
  23. Raidenwins

    Raidenwins

    Joined:
    Dec 18, 2012
    Posts:
    111
    That file is not present anywhere in any of the projects in the Visual Studio solution. I haven't deleted any files, i only just updated my Unity version three days ago. How can I retrieve that file?

    Update: correction, I did find the file in question, but it's not in the Assets/Zenject folder (in project Assembly-CSharp), but rather in the folder Assets/Plugins/Zenject. Not only that, but that folder, i.e. Plugins, is not included in the project Assembly-CSharp. I was only able to find it by doing a text search for it.

    There are also four more files with that extension, one for each Zenject project, i.e. Zenject-Editor, Zenject-PoolMoitor-Editor, Zenject-ReflectionBaking-Editor, and Zenject-TestFramework. In all of those the *.asamdef file is not included in the corresponding project either. Should I include the file in each project and try again?



     
    Last edited: Jan 30, 2019
  24. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    Can you try doing a clean install of the latest zenject? As far as I know the asmdef setup should play nicely with unity's new expectations
     
  25. Raidenwins

    Raidenwins

    Joined:
    Dec 18, 2012
    Posts:
    111
    Yes, that fixed it. The problem was that under my old installation of Zenject all of the files were under a folder called "Zenject", in the root "Assets" folder. After I installed the latest Zenject version, some of the files ended up in a new folder called "Plugins", while the old ones remained in the "Zenject" folder. That broke the assembly structure defined by the asmdef files. What i did to fix this was delete all Zenject files from my project and then install the latest version. Once i did that, I noticed all files were under the "Plugins" folder and everything started working correctly.
     
  26. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    Yeah, that makes sense. I think when unity imports an asset bundle it will replace any existing files with the new versions but it won't move them to a new location
     
    Raidenwins likes this.
  27. Maeslezo

    Maeslezo

    Joined:
    Jun 16, 2015
    Posts:
    93
    Hello,

    First, I apologize for asking a question about Zenject 4.7 (a two years old version).

    fooPrefab is a prefab with a gameobject context
    I have this installer:
    Code (CSharp):
    1.                 Container.Bind<IFoo>()
    2.                     .FromSubContainerResolve()
    3.                     .ByPrefab(fooPrefab)
    4.                     .AsSingle();
    With this binding, the fooPrefab is instantiated twice.

    However, with this line:
    Code (CSharp):
    1.                 Container.BindAllInterfaces<Foo>()
    2.                     .To<Foo>()
    3.                     .FromPrefab(fooPrefab)
    4.                     .AsSingle();
    I only have one prefab instance.

    1. Are they equivalent? Because with the second one, apparently everything work correctly, but reading the documentation, I think I should use FromSubContainerResolve().ByPrefab(fooPrefab)
    2. I have been searching this bug in zenject issue tracker and the release notes, but I didn't found anything, but I am pretty sure this may be fixed now. Do you remember something similar.
    PS: I swear we will update as soon as possible :(

    Void SimuZen.Services.AssetBundleRefactor:Inject (SimuzenAssetBundleTranslator, NetRegistryAssetsFromBundleFeeder, AssetBundleManager)+0x1 at F:\Simuzen\simuzen_dev\Assets\simuzen\platform\systems\base\services\bundle\AssetsFromBundle\AssetBundleRefactor.cs:[34:13-34:78]
    Object System.Reflection.MonoMethod:Invoke (Object, BindingFlags, Binder, Object[], CultureInfo)+0x38 at :-1
    Object System.Reflection.MethodBase:Invoke (Object, Object[])+0x6 at :-1
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x27c at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[994:25-994:85]
    Void Zenject.DiContainer:InjectExplicit (Object, List`1)+0x52 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[882:13-891:20]
    Void Zenject.DiContainer:Inject (Object, IEnumerable`1)+0x9 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1614:13-1615:66]
    Void Zenject.DiContainer:Inject (Object)+0x9 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1609:13-1609:47]
    Void Zenject.LazyInstanceInjector:LazyInjectAll ()+0x24 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\LazyInstanceInjector.cs:[55:17-55:45]
    Void Zenject.GameObjectContext:Construct (DiContainer, InstallerExtraArgs)+0xd8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Install\Contexts\GameObjectContext.cs:[69:13-69:61]
    Object System.Reflection.MonoMethod:Invoke (Object, BindingFlags, Binder, Object[], CultureInfo)+0x38 at :-1
    Object System.Reflection.MethodBase:Invoke (Object, Object[])+0x6 at :-1
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x27c at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[994:25-994:85]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1, Boolean)+0x94 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1539:17-1546:24]
    GameObject Zenject.DiContainer:InstantiatePrefabExplicit (Object, List`1, GameObjectCreationParameters, Boolean)+0x17 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1070:13-1071:55]
    GameObject Zenject.DiContainer:InstantiatePrefab (Object, IEnumerable`1, GameObjectCreationParameters)+0xb at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1362:13-1363:88]
    DiContainer Zenject.SubContainerCreatorByPrefab:CreateSubContainer (List`1)+0x2c at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\SubContainerCreators\SubContainerCreatorByPrefab.cs:[28:13-29:61]
    DiContainer Zenject.SubContainerCreatorCached:CreateSubContainer (List`1)+0x22 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\SubContainerCreators\SubContainerCreatorCached.cs:[25:17-25:91]
    Boolean <GetAllInstancesWithInjectSplit>d__6:MoveNext ()+0x3e at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\SubContainerDependencyProvider.cs:[47:13-47:78]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x12 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[29:13-29:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    Object Zenject.DiContainer:Resolve (InjectContext)+0x195 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[649:13-649:65]
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x10b at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[938:21-940:87]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1, Boolean)+0x94 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1539:17-1546:24]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1)+0x6 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1513:13-1514:57]
    Boolean <Instantiate>d__10:MoveNext ()+0xa1 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\PrefabCreators\PrefabInstantiator.cs:[58:13-59:74]
    Boolean <Instantiate>d__8:MoveNext ()+0xe0 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\PrefabCreators\PrefabInstantiatorCached.cs:[65:17-65:45]
    Boolean <GetAllInstancesWithInjectSplit>d__4:MoveNext ()+0xfe at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\ComponentProviders\GetFromPrefabComponentProvider.cs:[52:17-52:55]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x3e at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[38:17-38:45]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    Object Zenject.DiContainer:Resolve (InjectContext)+0x195 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[649:13-649:65]
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x10b at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[938:21-940:87]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1, Boolean)+0x94 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1539:17-1546:24]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1)+0x6 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1513:13-1514:57]
    Boolean <Instantiate>d__10:MoveNext ()+0xa1 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\PrefabCreators\PrefabInstantiator.cs:[58:13-59:74]
    Boolean <Instantiate>d__8:MoveNext ()+0xe0 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\PrefabCreators\PrefabInstantiatorCached.cs:[65:17-65:45]
    Boolean <GetAllInstancesWithInjectSplit>d__4:MoveNext ()+0xfe at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\ComponentProviders\GetFromPrefabComponentProvider.cs:[52:17-52:55]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x3e at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[38:17-38:45]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    Object Zenject.DiContainer:Resolve (InjectContext)+0x195 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[649:13-649:65]
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x10b at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[938:21-940:87]
    Void Zenject.DiContainer:InjectExplicit (Object, List`1)+0x52 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[882:13-891:20]
    Void Zenject.DiContainer:Inject (Object, IEnumerable`1)+0x9 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1614:13-1615:66]
    Void Zenject.DiContainer:Inject (Object)+0x9 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1609:13-1609:47]
    Void Zenject.LazyInstanceInjector:OnInstanceResolved (Object)+0x19 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\LazyInstanceInjector.cs:[45:17-45:45]
    Boolean <GetAllInstancesWithInjectSplit>d__5:MoveNext ()+0x72 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\InstanceProvider.cs:[33:13-33:57]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x12 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[29:13-29:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    Object Zenject.DiContainer:Resolve (InjectContext)+0x195 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[649:13-649:65]
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x1fe at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[977:29-978:122]
    Void Zenject.DiContainer:InjectExplicit (Object, List`1)+0x52 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[882:13-891:20]
    Void Zenject.DiContainer:Inject (Object, IEnumerable`1)+0x9 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1614:13-1615:66]
    Void Zenject.DiContainer:Inject (Object)+0x9 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1609:13-1609:47]
    Void Zenject.LazyInstanceInjector:LazyInjectAll ()+0x24 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\LazyInstanceInjector.cs:[55:17-55:45]
    Void Zenject.GameObjectContext:Construct (DiContainer, InstallerExtraArgs)+0xd8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Install\Contexts\GameObjectContext.cs:[69:13-69:61]
    Object System.Reflection.MonoMethod:Invoke (Object, BindingFlags, Binder, Object[], CultureInfo)+0x38 at :-1
    Object System.Reflection.MethodBase:Invoke (Object, Object[])+0x6 at :-1
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x27c at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[994:25-994:85]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1, Boolean)+0x94 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1539:17-1546:24]
    GameObject Zenject.DiContainer:InstantiatePrefabExplicit (Object, List`1, GameObjectCreationParameters, Boolean)+0x17 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1070:13-1071:55]
    GameObject Zenject.DiContainer:InstantiatePrefab (Object, IEnumerable`1, GameObjectCreationParameters)+0xb at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1362:13-1363:88]
    DiContainer Zenject.SubContainerCreatorByPrefab:CreateSubContainer (List`1)+0x2c at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\SubContainerCreators\SubContainerCreatorByPrefab.cs:[28:13-29:61]
    DiContainer Zenject.SubContainerCreatorCached:CreateSubContainer (List`1)+0x22 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\SubContainerCreators\SubContainerCreatorCached.cs:[25:17-25:91]
    Boolean <GetAllInstancesWithInjectSplit>d__6:MoveNext ()+0x3e at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\SubContainerDependencyProvider.cs:[47:13-47:78]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x12 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[29:13-29:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    Object Zenject.DiContainer:Resolve (InjectContext)+0x195 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[649:13-649:65]
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x10b at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[938:21-940:87]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1, Boolean)+0x94 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1539:17-1546:24]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1)+0x6 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1513:13-1514:57]
    Boolean <Instantiate>d__10:MoveNext ()+0xa1 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\PrefabCreators\PrefabInstantiator.cs:[58:13-59:74]
    Boolean <Instantiate>d__8:MoveNext ()+0xe0 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\PrefabCreators\PrefabInstantiatorCached.cs:[65:17-65:45]
    Boolean <GetAllInstancesWithInjectSplit>d__4:MoveNext ()+0xfe at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\ComponentProviders\GetFromPrefabComponentProvider.cs:[52:17-52:55]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x3e at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[38:17-38:45]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    IEnumerable`1 <>c__DisplayClass55_0:<ResolveAll>b__0 (ProviderPair)+0x17 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:57-429:107]
    Object[] SelectManySingleSelectorIterator`2:ToArray ()+0x30 at :-1
    Object[] System.Linq.Enumerable:ToArray (IEnumerable`1)+0x20 at :-1
    IList Zenject.DiContainer:ResolveAll (InjectContext)+0x64 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:17-429:119]
    Object Zenject.DiContainer:Resolve (InjectContext)+0xcb at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[632:21-632:51]
    Object Zenject.DiContainer:InstantiateInternal (Type, Boolean, InjectArgs)+0x126 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[813:25-814:81]
    Object Zenject.DiContainer:InstantiateExplicit (Type, Boolean, InjectArgs)+0x6 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[745:17-745:76]
    Boolean <GetAllInstancesWithInjectSplit>d__8:MoveNext ()+0xc0 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\TransientProvider.cs:[63:13-64:55]
    Boolean <GetAllInstancesWithInjectSplit>d__5:MoveNext ()+0xeb at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\CachedProvider.cs:[45:13-45:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x12 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[29:13-29:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    Object Zenject.DiContainer:Resolve (InjectContext)+0x195 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[649:13-649:65]
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x10b at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[938:21-940:87]
    Boolean <GetAllInstancesWithInjectSplit>d__12:MoveNext ()+0x141 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\ComponentProviders\AddToGameObjectComponentProviders\AddToGameObjectComponentProviderBase.cs:[89:13-89:77]
    Boolean <GetAllInstancesWithInjectSplit>d__5:MoveNext ()+0x153 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\CachedProvider.cs:[56:17-56:45]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x3e at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[38:17-38:45]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    IEnumerable`1 <>c__DisplayClass55_0:<ResolveAll>b__0 (ProviderPair)+0x17 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:57-429:107]
    Object[] SelectManySingleSelectorIterator`2:ToArray ()+0x30 at :-1
    Object[] System.Linq.Enumerable:ToArray (IEnumerable`1)+0x20 at :-1
    IList Zenject.DiContainer:ResolveAll (InjectContext)+0x64 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:17-429:119]
    Boolean <GetAllInstancesWithInjectSplit>d__6:MoveNext ()+0x76 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\ResolveProvider.cs:[36:13-36:96]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x12 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[29:13-29:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    IEnumerable`1 <>c__DisplayClass55_0:<ResolveAll>b__0 (ProviderPair)+0x17 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:57-429:107]
    Object[] SelectManySingleSelectorIterator`2:ToArray ()+0x30 at :-1
    Object[] System.Linq.Enumerable:ToArray (IEnumerable`1)+0x20 at :-1
    IList Zenject.DiContainer:ResolveAll (InjectContext)+0x64 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:17-429:119]
    List`1 Zenject.DiContainer:ResolveDependencyRoots ()+0x29 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[237:13-237:64]
    Void Zenject.ProjectContext:Initialize ()+0xc6 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Install\Contexts\ProjectContext.cs:[155:13-155:76]
    ProjectContext Zenject.ProjectContext:get_Instance ()+0x20 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Install\Contexts\ProjectContext.cs:[53:21-53:44]
    Void Zenject.SceneContext:Awake ()+0x1 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Install\Contexts\SceneContext.cs:[107:13-107:59]

    The second creation
    Void SimuZen.Services.AssetBundleRefactor:Inject (SimuzenAssetBundleTranslator, NetRegistryAssetsFromBundleFeeder, AssetBundleManager)+0x1 at F:\Simuzen\simuzen_dev\Assets\simuzen\platform\systems\base\services\bundle\AssetsFromBundle\AssetBundleRefactor.cs:[34:13-34:78]
    Object System.Reflection.MonoMethod:Invoke (Object, BindingFlags, Binder, Object[], CultureInfo)+0x38 at :-1
    Object System.Reflection.MethodBase:Invoke (Object, Object[])+0x6 at :-1
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x27c at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[994:25-994:85]
    Void Zenject.DiContainer:InjectExplicit (Object, List`1)+0x52 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[882:13-891:20]
    Void Zenject.DiContainer:Inject (Object, IEnumerable`1)+0x9 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1614:13-1615:66]
    Void Zenject.DiContainer:Inject (Object)+0x9 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1609:13-1609:47]
    Void Zenject.LazyInstanceInjector:LazyInjectAll ()+0x24 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\LazyInstanceInjector.cs:[55:17-55:45]
    Void Zenject.GameObjectContext:Construct (DiContainer, InstallerExtraArgs)+0xd8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Install\Contexts\GameObjectContext.cs:[69:13-69:61]
    Object System.Reflection.MonoMethod:Invoke (Object, BindingFlags, Binder, Object[], CultureInfo)+0x38 at :-1
    Object System.Reflection.MethodBase:Invoke (Object, Object[])+0x6 at :-1
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x27c at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[994:25-994:85]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1, Boolean)+0x94 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1539:17-1546:24]
    GameObject Zenject.DiContainer:InstantiatePrefabExplicit (Object, List`1, GameObjectCreationParameters, Boolean)+0x17 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1070:13-1071:55]
    GameObject Zenject.DiContainer:InstantiatePrefab (Object, IEnumerable`1, GameObjectCreationParameters)+0xb at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1362:13-1363:88]
    DiContainer Zenject.SubContainerCreatorByPrefab:CreateSubContainer (List`1)+0x2c at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\SubContainerCreators\SubContainerCreatorByPrefab.cs:[28:13-29:61]
    DiContainer Zenject.SubContainerCreatorCached:CreateSubContainer (List`1)+0x22 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\SubContainerCreators\SubContainerCreatorCached.cs:[25:17-25:91]
    Boolean <GetAllInstancesWithInjectSplit>d__6:MoveNext ()+0x3e at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\SubContainerDependencyProvider.cs:[47:13-47:78]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x12 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[29:13-29:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    Object Zenject.DiContainer:Resolve (InjectContext)+0x195 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[649:13-649:65]
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x10b at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[938:21-940:87]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1, Boolean)+0x94 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1539:17-1546:24]
    Void Zenject.DiContainer:InjectGameObjectExplicit (GameObject, Boolean, List`1)+0x6 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[1513:13-1514:57]
    Boolean <Instantiate>d__10:MoveNext ()+0xa1 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\PrefabCreators\PrefabInstantiator.cs:[58:13-59:74]
    Boolean <Instantiate>d__8:MoveNext ()+0xe0 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\PrefabCreators\PrefabInstantiatorCached.cs:[65:17-65:45]
    Boolean <GetAllInstancesWithInjectSplit>d__4:MoveNext ()+0xfe at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\ComponentProviders\GetFromPrefabComponentProvider.cs:[52:17-52:55]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x3e at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[38:17-38:45]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    IEnumerable`1 <>c__DisplayClass55_0:<ResolveAll>b__0 (ProviderPair)+0x17 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:57-429:107]
    Object[] SelectManySingleSelectorIterator`2:ToArray ()+0x30 at :-1
    Object[] System.Linq.Enumerable:ToArray (IEnumerable`1)+0x20 at :-1
    IList Zenject.DiContainer:ResolveAll (InjectContext)+0x64 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:17-429:119]
    Object Zenject.DiContainer:Resolve (InjectContext)+0xcb at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[632:21-632:51]
    Object Zenject.DiContainer:InstantiateInternal (Type, Boolean, InjectArgs)+0x126 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[813:25-814:81]
    Object Zenject.DiContainer:InstantiateExplicit (Type, Boolean, InjectArgs)+0x6 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[745:17-745:76]
    Boolean <GetAllInstancesWithInjectSplit>d__8:MoveNext ()+0xc0 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\TransientProvider.cs:[63:13-64:55]
    Boolean <GetAllInstancesWithInjectSplit>d__5:MoveNext ()+0xeb at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\CachedProvider.cs:[45:13-45:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x12 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[29:13-29:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    Object Zenject.DiContainer:Resolve (InjectContext)+0x195 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[649:13-649:65]
    Void Zenject.DiContainer:InjectExplicit (Object, Type, InjectArgs)+0x10b at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[938:21-940:87]
    Boolean <GetAllInstancesWithInjectSplit>d__12:MoveNext ()+0x141 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\ComponentProviders\AddToGameObjectComponentProviders\AddToGameObjectComponentProviderBase.cs:[89:13-89:77]
    Boolean <GetAllInstancesWithInjectSplit>d__5:MoveNext ()+0x153 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\CachedProvider.cs:[56:17-56:45]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x3e at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[38:17-38:45]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    IEnumerable`1 <>c__DisplayClass55_0:<ResolveAll>b__0 (ProviderPair)+0x17 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:57-429:107]
    Object[] SelectManySingleSelectorIterator`2:ToArray ()+0x30 at :-1
    Object[] System.Linq.Enumerable:ToArray (IEnumerable`1)+0x20 at :-1
    IList Zenject.DiContainer:ResolveAll (InjectContext)+0x64 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:17-429:119]
    Boolean <GetAllInstancesWithInjectSplit>d__6:MoveNext ()+0x76 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\ResolveProvider.cs:[36:13-36:96]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext, List`1)+0x12 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[29:13-29:46]
    List`1 Zenject.IProviderExtensions:GetAllInstances (IProvider, InjectContext)+0x8 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Providers\IProviderExtensions.cs:[18:13-18:80]
    IEnumerable`1 Zenject.DiContainer:SafeGetInstances (IProvider, InjectContext)+0x7f at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[672:21-672:62]
    IEnumerable`1 <>c__DisplayClass55_0:<ResolveAll>b__0 (ProviderPair)+0x17 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:57-429:107]
    Object[] SelectManySingleSelectorIterator`2:ToArray ()+0x30 at :-1
    Object[] System.Linq.Enumerable:ToArray (IEnumerable`1)+0x20 at :-1
    IList Zenject.DiContainer:ResolveAll (InjectContext)+0x64 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[429:17-429:119]
    List`1 Zenject.DiContainer:ResolveDependencyRoots ()+0x29 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Main\DiContainer.cs:[237:13-237:64]
    Void Zenject.ProjectContext:Initialize ()+0xc6 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Install\Contexts\ProjectContext.cs:[155:13-155:76]
    ProjectContext Zenject.ProjectContext:get_Instance ()+0x20 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Install\Contexts\ProjectContext.cs:[53:21-53:44]
    Void Zenject.SceneContext:Awake ()+0x1 at F:\Simuzen\simuzen_dev\Assets\simuzen\CommonTools\zenject\Source\Install\Contexts\SceneContext.cs:[107:13-107:59]
     
  28. BAIZOR

    BAIZOR

    Joined:
    Jul 4, 2013
    Posts:
    72
    Can Zenject solve scene's dependencies by compile time (non-runtime) for performance reason?
     
  29. hottabych

    hottabych

    Joined:
    Apr 18, 2015
    Posts:
    95
    Hey, do you have any support channels in Slack or Discord?
     
  30. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    Last edited: Jun 14, 2019
  31. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
  32. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    I can't think of a reason that binding would cause the prefab to be instantiated twice. It could be a bug. Feel free to add an issue for it, maybe after you upgrade
     
  33. eventropy

    eventropy

    Joined:
    Oct 4, 2012
    Posts:
    248
    Sounds like you might be talking about reflection baking? If not, please elaborate
     
  34. BAIZOR

    BAIZOR

    Joined:
    Jul 4, 2013
    Posts:
    72
    I mean, that I have some structure of objects in a scene, which could be linked with each other in Editor.
    For ingame performance reason just save these links in Editor. After that on a mobile device the just load the scene, and the links exist here.

    My scene has hundreds (maybe even thousands) simple links, like Bind<SpriteRenderer>().FromComponentChildren() . 80% of them I can link in Editor.