Version: 2023.2
Language : English
Deprecated packages
How Unity works with packages

Unity’s Package Manager

A package is a container that stores various types of features or assets, such as:

  • Editor tools and libraries, such as a text editor, an animation viewer, or test frameworks.
  • Runtime tools and libraries, such as the Physics API or a Graphics pipeline.
  • Asset collections, such as Textures or animations.
  • Project templates to share common project types with others.

Packages deliver a wide range of enhancements to Unity through the Package Manager. To help find and use these packages, the Package Manager window provides collections of packages that you can use together, called feature sets.

In the Editor, you can access the Package Manager window through this menu: Window > Package Manager.

The Package Manager also supports management of packages you download or import from the Unity Asset StoreA growing library of free and commercial assets created by Unity and members of the community. Offers a wide variety of assets, from textures, models and animations to whole project examples, tutorials and Editor extensions. More info
See in Glossary
.

Unity provides three Package Manager interfaces: Package Manager window, Scripting API, and manifest files. The following table contains introductions to each interface, and more.

Topic Description
How Unity works with packages Get an overview of Unity’s Package Manager.
Concepts Learn the principles and features of the Package Manager, including concepts like versions, manifests, registries, states, sources, the package lifecycle, and dependency and resolution.
Package Manager window Find packages and manage them in your project, and resolve conflicts in package dependencies. The Package Manager provides a user interface that makes changes to the Project manifestEach Unity project has a project manifest, which acts as an entry point for the Package Manager. This file must be available in the <project>/Packages directory. The Package Manager uses it to configure many things, including a list of dependencies for that project, as well as any package repository to query for packages. More info
See in Glossary
directly.
Scripting API for packages Use the Scripting API to interact with the Package Manager using C# scriptsA piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info
See in Glossary
. View samples to see how to query the package registry, install, embed, and remove packages, and list packages using a variety of criteria.
Project manifest Learn about the file that the Unity Package Manager reads so it can compute a list of packages to retrieve and load. See also Package manifestEach package has a manifest, which provides information about the package to the Package Manager. The manifest contains information such as the name of the package, its version, a description for users, dependencies on other packages (if any), and other details. More info
See in Glossary
.
Inspecting packages Use a dedicated InspectorA Unity window that displays information about the currently selected GameObject, asset or project settings, allowing you to inspect and edit the values. More info
See in Glossary
window to view any package manifest. Use this window to directly edit package manifests for embedded or local packages.
Scoped Registries Learn how to set up or access a custom registry server. Use this registry server to host and distribute (or consume) custom packages, in addition to the registry that Unity provides.
Configuration Learn how configure scoped registry authentication, solve network issues, customize cache locations, and more.
Resolution and conflict Learn how the Package Manager determines the direct and indirect dependenciesAn indirect, or transitive dependency occurs when your project requests a package which itself “depends on” another package. For example, if your project depends on the alembic@1.0.7 package which in turn depends on the timeline@1.0.0 package, then your project has an direct dependency on Alembic and an indirect dependency on Timeline. More info
See in Glossary
of a project and evaluates all the requested package versions before retrieving the best version from the registry.
Troubleshooting Match a symptom to a possible solution if any of your project’s packages, including the Package Manager window itself, fails to load.

Additional resources

  • Asset Store packages
  • Embedded packagesAn embedded package is a mutable package that you store under the Packages directory at the root of a Unity project. This differs from most packages which you download from a package server and are immutable. More info
    See in Glossary
  • Local packagesA local package already exists on the file system, usually outside the project folder. To install the package, notify the Package Manager of its location through the Packages window. More info
    See in Glossary
  • Package manifest
Deprecated packages
How Unity works with packages