Dependency Injection in Unity3D using Zenject

Dependency Injection in Unity3D using Zenject


  • Students should be familiar with Unity basics
  • Intermediate C# programming experience is required
  • Design Patterns knowledge is a plus, but not mandatory


This course is dedicated to Zenject – a free open-source dependency injection framework designed for Unity.

This course is updated for Zenject Version 6.1.1. Zenject is constantly updated by it’s creator, and I’ll try to update the course content as soon as functionality is added or modified.

Before we dig into the dependency injection, I’ll show that you can use Zenject without deep understanding of its mechanics – it is so easy!

Next, I’ll continue with the detailed explanation of the dependency injection pattern in the Dependency Injections basics section. What, Why and How – those questions will be answered in this section.

Injecting MonoBehaviour classes section explains how to properly setup Unity scene using Zenject components, and shows some basic bindings examples.

The Bindings section deeply covers the functionality that makes Zenject so flexible and powerful, allowing its users to create injections of any complexity.

Adding non-MonoBehaviour classes to the Unity lifecycle section explains how integrate non-MonoBehaviour classes into Unity Game Loop, giving them the ability to use Start, Update and OnDestroy-like methods in such classes.

In the Container section, I’ll show some additional DiContainer methods that might become useful. We’ll also cover Zenject order of operations, which will help you to avoid (or at least easily debug) Zenject exceptions.

Refactoring: Removing other patterns section compares Dependency Injection, Singleton and Service Locator patterns, and demonstrates a painless way to refactor them.

In the Factory section, you will learn how to create and inject MonoBehaviour objects dynamically with a little help from the Factory class

Next, I’ll show you how the manage and reuse created objects using Memory Pools, which can be especially useful for a mobile device game.

Zenject also allows grouping bound objects, combining the Facade pattern with the Subcontainer functionality. Will cover this topics in details in the Subcontainer section.

In the Dealing with multiple scenes section you will learn how to pass dependencies from one scene to another and use dependency injection in conjunction with Unity multi-scene editing feature.

This course also covers Signals, an implementation of the Observer pattern. In the Building an Event System section, I’ll show you an example of a custom made event system and then compare it to the functionality provided by Zenject.

Finally, in the Unit and Integration Testing section, I’ll show you how Zenject simplifies unit and integration test creation with its helper classes and MOQ library support.

Who this course is for:

  • Unity developers that want to refactor their existing projects or create new projects using Dependency Injection
  • Unity enthusiasts who want to learn the Dependency Injection pattern to use it in the game development.


Online Courses
We will be happy to hear your thoughts

Leave a reply

awsomenews Free Online Courses