Version: 2022.3
Language : English
Scripting API for packages
Scoped registries

Accessing package assets

This section explains how to access or refer to assets that are defined inside a package:

Note: Package Manager doesn’t support streaming assets in packages. Use the Addressables package instead.

Referring to package paths

To refer to assets that are defined inside a package, use this path scheme:

"Packages/<package-name>/..."

The path of the asset inside a package begins with Packages/ and the package name (not the display name).

By contrast, you access project assets using this scheme:

"Assets/..."

For example, the path for the file image.png in the package subfolder /Example/Images of the com.unity.images-library package is:

"Packages/com.unity.images-library/Example/Images/image.png"

To get the absolute path of an item in your Packages folder, you can use the partial path as a parameter to the Path.GetFullPath() method. For an example, refer to Resolving absolute paths.

Loading a Texture inside a package

To load a Texture stored inside a package, use the LoadAssetAtPath method, which requires the using UnityEditor directive. Specify the path following the Packages/<package-name>/ path scheme as demonstrated in this example:

using UnityEditor;
// ...
Texture2D texture = (Texture2D)AssetDatabase.LoadAssetAtPath("Packages/com.unity.images-library/Example/Images/image.png", typeof(Texture2D));

Resolving absolute paths

To get the absolute path of a packaged asset, use the Path.GetFullPath() method, which requires the using System.IO directive. For example:

using System.IO;
// ...
string absolute =   Path.GetFullPath("Packages/com.unity.images-library/Example/Images/image.png");

Additional resources

Scripting API for packages
Scoped registries