Small Unity packages that compose instead of taking over: scopes with deterministic clean-up, typed events, dependency injection that validates the whole graph before it builds, and the pieces that connect them to a Unity scene. Each package is usable on its own, documented, and tested.
Unity 6000.0 or newer · Apache-2.0 · published on OpenUPM under the
com.openugd scope ·
| Package | What it gives you | Depends on |
|---|---|---|
Lifetime — com.openugd.lifetime |
Scopes with deterministic, reverse-order clean-up | — |
Signal — com.openugd.signal |
Typed events whose subscriptions end with a lifetime | Lifetime |
Context — com.openugd.context |
Dependency injection that validates the whole graph before it builds anything | Lifetime |
CoreLib — com.openugd.corelib |
The Unity boundary: ContextBehaviour, presenters, commands, logging |
Lifetime, Signal, Context |
CoreLib uGUI Presenters — com.openugd.corelib.widgets |
Presenters that bind uGUI and TextMesh Pro controls to a model | CoreLib, Context, Signal, Lifetime, uGUI |
uGUI Components — com.openugd.ui |
Shader-free uGUI components: flip, gradient, invisible hit area | uGUI |
- Plain C# scopes and events: Lifetime, then Signal.
- Dependency injection: Context. It has no Unity dependency, so it also runs in plain NUnit tests and servers.
- Inside a Unity scene: CoreLib boots a Context from a
MonoBehaviour; add CoreLib uGUI Presenters to bind UI. - Just the uGUI effects: uGUI Components needs nothing else from the family.
Install with the OpenUPM CLI, which adds the scoped registry and brings the dependencies along:
openupm add com.openugd.corelibor add the registry to Packages/manifest.json yourself:
{
"scopedRegistries": [
{ "name": "package.openupm.com", "url": "https://package.openupm.com", "scopes": ["com.openugd"] }
],
"dependencies": {
"com.openugd.corelib": "2.0.0"
}
}Each package's README has a quick start, the concepts, an API overview, samples you can import from the Package Manager, and how to run its tests.
upm-tools holds the checks. Its CI compiles every package, its samples and the complete examples in its README against Unity 6000.0's assemblies, runs the engine-free tests, and checks managed-code stripping with Unity's linker, on every change there and every Monday. Before a release the full suites also run in a real Unity editor, from the packages exactly as OpenUPM publishes them, and in an IL2CPP player.
- upm-configuration — string-keyed configuration for Context; 0.x, not on OpenUPM yet.
- upm-dependency-injection — archived, replaced by Context.
- The other repositories hold packages that predate 2.0 and are not part of the 2.x family.