This library is essentially a collection of utility classes and components that I've been building since I first adopted Unity in 2016. Back then, I was working on a first-person shooter, so I wrote several components related to inventory, ammo/health, projectile spawning, etc. As I started adding more general, utility components (for logging, dependency injection, PRNG, file I/O, etc.) and working on games in other genres (particularly the mobile game, High Hand Hold'em™) I decided that these components should be moved to a separate, open-source repository for reuse between projects.
The name of this library has gone through several iterations.
First, it was "Danware.Unity", named for the short-lived company, Danware Creations, LLC, that I founded before
my partner and I founded Derploid Entertainment, LLC.
In January 2018, I renamed this library to the organization-agnostic "UnityUtil", but the namespaces were all still under UnityEngine.*,
which I thought would be simpler for consumers of the library.
Finally, in May 2022, I decided that this was actually more confusing
(it might not be clear why an API is unavailable if UnityUtil hasn't been referenced)
and eventually renamed all namespaces to UnityUtil.*.
In late 2022, I started getting more serious about documenting the library and making it publicly consumable. After discovering the awesome OpenUPM project for hosting UPM packages, I created a UPM manifest for the package and made plans to distribute the library that way.
In April 2024, while setting up UnityUtil for use in another game project (a prospective video game adaptation of the board game, boop!), I finally decided to break up the library from its "monolithic" state into separate modules for physics, UI, triggers, etc. Each of these modules can now be imported as UPM packages from their git URLs.
Once my partner and I publish High Hand Hold'em™ (meaning UnityUtil has been used in an actual published game), then I plan to release 1.0 versions of them to OpenUPM.
I am proud of several technical details in this library:
Microsoft.Extensions.* libraries.
Still, I now have a very solid understanding of how DI and logging systems work in general, and the Microsoft ones in particular.
The input mapping system is being replaced by Unity's newer
InputSystem UPM package.