What's this?
One important benefit of using OpenUPM is that once the package is installed, it works like a normal Unity package. Updates do not need to be manually tracked, but they will be available as they are released. Svelto.ECS and Svelto.Tasks on OpenUPM Svelto.ECS and Svelto.Tasks can now be installed in Unity using OpenUPM. Once you have the OpenUPM cli, run the following command: openupm install com.madsbangh.easybuttons. Or if you don't have it, add the scoped registry to manifest.json with the desired version.
Open Up My Facebook
This simple API creates a .unitypackage that will install a Unity Package Manager package into your Unity project.
It will add the required scopes, automatically fetch the latest available version on installation, and remove itself after installation.
You can simply drop such a .unitypackage into Unity and click 'import'.
This reduces the friction of using custom registries considerably.
If this sounds kinda complicated, well, yes. The only reason this is required is because Unity is treating packages with a love/hate relationship currently; all of this could be much, much easier. See What Unity Could Do, especially if you're a Unity person.
Basic API
Minimal example – latest version, automatic scope
If you omit the version, the latest available will be used. If you omit the scope, the package name and dependencies will be used as scopes automatically.
Download Installer for Addressable Importer
Link to package on registry
Open Upm File
Install a single package
Depending on how you set the scope, other packages from your registry will be visible and installable through PackMan.
Download Installer for Needle Compilation Visualizer
Link to package on registry
Install package & dependencies for registries with many scopes (e.g. OpenUPM)
If you don't specify the scope, the first level of dependencies will be automatically included. This helps to support e.g. packages on OpenUPM with dependencies between them. This package for example has a dependency on another OpenUPM package that will be automatically installed alongside.
Download Installer for ElZach LevelEditor
Link to package on registry
Open Up Minnesota
What Unity could do to make this easier
Openup Music
- Add support for scoped registries and custom packages in .unitypackage manifest files
- Add deep linking support for Unity / Hub to install packages
- Add a proper (public) API to add/remove/update scoped registries
- Fix issues around updating packages and scoped registries (e.g. need to re-focus Unity, sometimes no updates until Editor restart, ...)
- Fix compilation issues on package updates (fatal compiler crashes)
- Backport all these things to LTS versions (2018 + 2019) instead of adding them for Unity 2039.3+ only
TODO // Unsupported
- Infer registry name from registry URL (gets rid of yet another parameter). Could also have a hardcoded list for known registries.
- Open PackMan after installation
- Do not set up registry if same name already existed with different URL
- Clean up csproj file when auto-deleting installer
Fix issues with long registry paths and yaml multiline weirdness- Investigate if there's a way around the occassional compiler error in Unity when rapidly adding/removing files
- Specify package installation mode (currently: always uses latest available, no matter which version was specified)
- Install multiple packages
- Set up multiple registries
- Only set up registry, don't install packages
- Make a nice badge / URL thingy
Add way more sanity checksCheck for package existanceMake package version optional (use latest)Add tests- Add option to still get installer if package is inaccessible (e.g. needs auth)
- Add option to include auth tools (Tomlyn for .npm auth setup)
Tests
- Should fail: Version does not exist
- Should fail: Registry does not exist
- Should fail: Package does not exist
- Should fail: No package specified
- Should work: No scope specified
- Should work: No scope/version specified
- Should work: Multiple scopes
- Should work: No scope specified but has dependendant scopes
Experimental
Made by 🌵 Needle
@needle-tools@hybridherbst@marcel_wiessler