Loading...
Searching...
No Matches
Unity Nexus — DI Container

A lightweight, zero-dependency dependency injection container for Unity.
Part of the Unity Nexus plugin family.


Installation

Add via Unity Package Manager using the git URL:

https://github.com/arijeetbaruah/Unity-Nexus.git

Quick Start

1. Create an Installer

using UnityNexus.DI;
public class GameInstaller : NexusInstaller
{
protected override void InstallBindings(DependencyContainer container)
{
container.BindInstance(new AudioService());
container.BindSingleton<IPlayerService>(() => new PlayerService());
container.BindTransient<IEnemyFactory>(() => new EnemyFactory());
}
}

Attach GameInstaller to a GameObject in your scene. It runs on Awake before everything else — set its Script Execution Order accordingly.


2. Implement IInjectable

using UnityNexus.DI;
using UnityEngine;
public class LevelingService : MonoBehaviour, IInjectable
{
private IPlayerService _playerService;
public void Inject(DependencyContainer container)
{
_playerService = container.Resolve<IPlayerService>();
}
}

NexusInstaller automatically finds all IInjectable MonoBehaviours in the scene and calls Inject after bindings are registered.


Binding Types

Method Behaviour
BindInstance<T>(instance) Registers a pre-existing object as a singleton
BindSingleton<T>(factory) Creates once on first resolve, cached forever
BindTransient<T>(factory) Creates a new instance on every resolve

Resolving

// Direct resolve — throws BindingNotFoundException if missing
var service = container.Resolve<IPlayerService>();
// Safe resolve — returns false if missing
if (container.TryResolve<IPlayerService>(out var service))
{
// use service
}
// Check before resolving
if (container.HasBinding<IPlayerService>())
{
// ...
}

Requirements

  • Unity 2021.3+
  • .NET Standard 2.1