Dignus.Unity
1.0.14
dotnet add package Dignus.Unity --version 1.0.14
NuGet\Install-Package Dignus.Unity -Version 1.0.14
<PackageReference Include="Dignus.Unity" Version="1.0.14" />
<PackageVersion Include="Dignus.Unity" Version="1.0.14" />
<PackageReference Include="Dignus.Unity" />
paket add Dignus.Unity --version 1.0.14
#r "nuget: Dignus.Unity, 1.0.14"
#:package Dignus.Unity@1.0.14
#addin nuget:?package=Dignus.Unity&version=1.0.14
#tool nuget:?package=Dignus.Unity&version=1.0.14
Dignus.Unity
Lightweight Unity extension built on top of the Dignus framework.
Provides dependency injection, coroutine management, pooling, and DI-ready scene architecture for scalable Unity projects.
Overview
Dignus.Unity is a lightweight and extensible Unity framework built to streamline large-scale game architecture.
It offers dependency injection, coroutine scheduling, resource and object pooling, and scene-based architecture with reactive data binding.
Core Features
| Feature | Description |
|---|---|
| Dependency Injection | Lightweight DI via DignusUnityServiceContainer |
| Scene Architecture | Structured scene controllers with SceneControllerBase<TScene, TModel> |
| Coroutine Manager | High-performance coroutine scheduler using DignusUnityCoroutineManager |
| Object Pooling | Reuse GameObject and Component instances via DignusUnityObjectPool |
| Resource Management | Centralized prefab and asset handling with DignusUnityResourceManager |
| Reactive Binding | BindableProperty<T> system for UI and gameplay data synchronization |
| Singleton System | Simple and persistent lifecycle management for runtime managers |
| Async Scene Flow | DignusUnitySceneManager for async scene transitions and initialization |
Manager Overview
DignusUnityCoroutineManager
DignusUnityCoroutineManager.Start(MyCoroutine());
Efficient coroutine handler that executes enumerators or coroutine handles with optional delay and completion callbacks. Internally updates via FixedUpdate to ensure stable timing without GC allocations.
DignusUnityObjectPool
var bullet = DignusUnityObjectPool.Instance.Pop(prefab);
DignusUnityObjectPool.Instance.Push(bullet);
Reuses and manages pooled GameObject instances to minimize runtime allocations. Supports both GameObject and Component-based access.
DignusUnityResourceManager
var prefab = DignusUnityResourceManager.Instance.LoadAsset<MyPrefab>();
Loads assets from Unity’s Resources folder with internal caching and prefab-path attribute support.
DignusUnitySceneManager
DignusUnitySceneManager.Instance.LoadScene(SceneType.LobbyScene.ToString());
Handles asynchronous scene transitions, scene lifecycle events, and current scene registration.
UnityServiceContainer
var container = DignusUnityServiceContainer.RegisterDependencies(typeof(LobbySceneController).Assembly);
container.Build();
Dependency injection container specialized for Unity — supports runtime object construction with argument injection.
Example: Lobby Scene Architecture
Controller
[Injectable(LifeScope.Singleton)]
public class LobbySceneController : SceneControllerBase<LobbyScene, LobbySceneModel>
{
private readonly GameClientService _gameClientService;
private readonly UserService _userService;
public LobbySceneController(GameClientService gameClientService, UserService userService)
{
_userService = userService;
_gameClientService = gameClientService;
}
public void OnAwake()
{
Model.CurrentPlayer = new GamePlayer()
{
AccountId = _userService.GetUserModel().AccountId,
Nickname = _userService.GetUserModel().Nickname
};
}
public void RoomListRequest(int page, int size)
{
_gameClientService.Send(Packet.MakePacket(CGSProtocol.GetRoomList, new GetRoomList()
{
Page = page,
ItemSize = size
}));
}
public override void Dispose()
{
Model.LobbyRoomInfos.Clear();
}
}
Model
public class LobbySceneModel : ISceneModel
{
public Dictionary<int, ArrayQueue<RoomListItemUI>> LobbyRoomInfos { get; set; } = new();
public GamePlayer CurrentPlayer { get; set; }
public List<PlayerModel> RoomMembers { get; set; }
public int JoinRoomNumber { get; set; }
}
Scene
public class LobbyScene : SceneBase<LobbySceneController>
{
private LobbyUI _lobbyUI;
protected override void OnAwakeScene()
{
SceneController.OnAwake();
_lobbyUI = UIManager.Instance.AddUI<LobbyUI>();
_lobbyUI.Init(SceneController);
}
public override void OnDestroyScene()
{
UIManager.Instance.RemoveUI(_lobbyUI);
SceneController.Dispose();
}
}
Example Scene Flow
// Dependency Setup
var container = DignusUnityServiceContainer.RegisterDependencies(typeof(LobbySceneController).Assembly);
container.Build();
// Load Scene with DI Controller
DignusUnitySceneManager.Instance.LoadScene<LobbyScene>(SceneType.LobbyScene);
Highlights
Zero-GC Scene Flow – Optimized for stable runtime performance
Reactive UI – BindableProperty updates UI automatically
Extensible Architecture – Seamlessly integrates with Dignus.Core and Dignus.DependencyInjection
Unity-Native Lifecycle – Works directly with Awake, Start, and OnDestroy
Production Ready – Designed for scalability and maintainability
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| .NET Framework | net48 is compatible. net481 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.14 | 100 | 5/8/2026 |
| 1.0.13 | 91 | 4/25/2026 |
| 1.0.12 | 100 | 4/5/2026 |
| 1.0.11 | 104 | 2/21/2026 |
| 1.0.10 | 120 | 1/31/2026 |
| 1.0.9 | 114 | 1/26/2026 |
| 1.0.8 | 433 | 12/11/2025 |
| 1.0.7 | 175 | 11/23/2025 |
| 1.0.6 | 241 | 11/22/2025 |
| 1.0.5 | 178 | 11/2/2025 |
| 1.0.4 | 197 | 10/31/2025 |
| 1.0.3 | 201 | 10/30/2025 |
| 1.0.2 | 208 | 10/29/2025 |
| 1.0.1 | 200 | 10/28/2025 |
| 1.0.0 | 199 | 10/28/2025 |