Unity's Staging Packages

Monday, April 16, 2018

Ya'll know what Unity's Package Manager is right? It's an awesome way Unity is making itself more modular, being able to add functionality and update that feature in an isolated way instead of the whole editor.
If you open the package manager you might see 5 or 10 packages. But you can jump on the bleeding edge and get access to a few other hidden packages.
Open up your packages/Manifest.json file and add

You'll now have access to a few more packages that you probably shouldn't be using in production.

Even More

A ton of packages aren't listed. You can see a list of them here. (I found this link via google by searching for com.unity.progrids).

I think some of them have been discussed before, but I've never heard of some of them. Here's a few I looked into.

com.unity.progrids

Was already using Probuilder as a package - now you can use progrids as a package too!

com.unity.properties

Seems to be a way to use reflection without using reflection. My impression is that you mark an class with a special interface, and it'll generate code to be able to traverse those properties. For doing stuff like serialisation. My guess is that this is an effort to move away from the SerializedProperty shit in the editor, and share that code with the runtime.

com.unity.localization

Localization - finally. Didn't actually get it to work because I'm using 2018.1 and it requires 2018.2, but the documentation shows editor windows that you'd kind of expect.

Doesn't indicate how you use the locales or anything. I was hoping to see integration with UI elements that accepted strings, but didn't see any indication of that when I flicked though the code.

com.unity.collections

Seems to be generic collections (List, HashMap, Queue) coded for performance. Specifically they seem to be heavy on pooling and manually managing the memory allocation.

com.unity.tiny.editor

Not sure if it's another editor, or named wrong, but the contents seem to suggest that it's used for creating really tiny builds. Unity touched on this at GDC I think, something about making annoying HTML5 ads more annoying by integrating games into them.

com.unity.addressables

Apparently enables the ability to give an asset an "address" (which seems to just be a unique name), and then "load" it via that address, no matter whether it's in an asset bundle, resources folder or anywhere else.

The idea seems to be that you can add new resource providers, so loading assets "by name" would happen via a single interface, and you can make resource providers for resources, asset bundles and whatever.

Other Stuff

I only really looked into stuff that peaked my interest, so there might be other interesting stuff there. Let me know in the comments if you see anything cool.