Skip to content

Reporting

Overview

This module will scan the complete project and try to identify packages that were being used. It also supports exporting your data and listing used licenses.

Asset Inventory documentation screenshot

Packages that could be identified with 100% confidence, where also the version is guaranteed to be correct, will be shown with a bold version column. All registry packages automatically fall into this category. From Unity 2023+ also local assets are typically identified correctly if imported through Unity 2023+, since it will store the asset origin in the meta data files allowing to pinpoint the exact version correctly.

When selecting an asset in the Unity Project View, the reporting tab will try to identify the associated package in the lower right info box.

Asset Export

In case you want to perform your own analysis or create reports it is possible to export the database contents into various formats. Exporting packages can be done one-by-one or in bulk. Supported options are:

The catalog is not a dead end or proprietary silo. Use ready-made CSV, static HTML, package-content, license, override, and Markdown exports, or adapt the template system when a team, customer portal, spreadsheet, or internal process needs a different format.

  • CSV: for easy processing in Excel and other compatible software
  • Template-Based: complex export formats like HTML webpages or any custom format utilizing an easy but powerful scripting language
  • Package Contents: will extract packages and copy their files to another directory
  • Licenses: will list all packages with a non-default license in MD format
  • Overrides: JSON files which can be used to override package-specific metadata in team scenarios (e.g. to enforce common tags & categories)

Asset Inventory documentation screenshot

CSV Export

A screen shot of a computer screen
<p>AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/a5553b68cd1c53be.png” loading=“lazy” decoding=“async”>Will export package metadata to a single file which can be read by spreadsheet software or other tools.</p></p>
<p><img src=

Package Content Export

Exporting files from a package will allow you to reuse these easily in other contexts.

Asset Inventory documentation screenshot

Overrides

Override Json files are a way of providing additional information for packages during indexing. This is helpful if e.g. a whole team is indexing and you want to ensure the same category or certain tags are set the same everywhere. To have a better starting point these files can be created with the existing data so that yo-u only need to adjust them instead of creating them from scratch.

A screenshot of a box
<p>AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/2d8dfea2bca25499.png” loading=“lazy” decoding=“async”></p></p>
<p><a id=Licenses

It can be very useful for compliance to list all third party licenses involved in a project. The license export will create an MD containing all packages with a non-default license.

Asset Inventory documentation screenshot

Template-Based

The most powerful export mechanism is the template based approach. It processes a whole set of input files, utilizes Scriban, a template scripting language, to embed data and export the result to a custom directory. Some powerful templates are already included and custom ones can be added easily.

A screenshot of a menu
<p>AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/7413a7bd249156f3.png” loading=“lazy” decoding=“async”></p></p>
<p><strong>Configurations</strong> allow to use different paths depending on the target environment, e.g. for local testing or when deployed remotely on a server. In one case you might want to load data & images from specific folders, another time from a CDN URL.</p>
<p>Depending on the type of template, only a subset of features might be visible. The included HTML template points to the <em>Previews</em> folder and therefore will always export next to that directory. What features are possible is defined in the <strong>template descriptor</strong>, an optional <em>Json</em> file with the same name as the template.</p>
<p><img alt=AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/a82dcf791dd29fed.png” loading=“lazy” decoding=“async”>

Below is an example template descriptor for the package-only HTML export based on the full HTML export template, extending it but deleting files and moving others around.

Asset Inventory documentation screenshot

Available properties: name, description, version, date, readOnly, isSample, fixedTargetFolder, entryPath, needsDataPath, needsImagePath, packageFields, fileFields, inheritFrom, moveFiles, deleteFiles

A screenshot of a computer
<p>AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/4b90c14db9f11f9d.png” loading=“lazy” decoding=“async”><img alt=“A screenshot of a video game</p>
<p>AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/59b6e55ea30d1fa3.png” loading=“lazy” decoding=“async”>The full <strong>HTML export</strong> provides a serverless file search right inside the HTML export with powerful filter options, paging and rich visualization. The package view lists all packages and allows to see package details.</p></p>
<p><img alt=AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/33def139e8108171.png” loading=“lazy” decoding=“async”>

Using the advanced features (hold CTRL), you can create or extend templates. Extending a template means that all files of the original template will be materialized upon export plus the files you put into the new template and the changes expressed in the descriptor.

A screenshot of a computer
<p>AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/767e45777290fbc1.png” loading=“lazy” decoding=“async”></p></p>
<p>You can also activate the <strong>template development mode</strong>. This is powerful to quickly iterate on templates, reduce the amount of data processed, automatically trigger exports upon changes in the dev directory and more. Setting a dev folder will export the template from this folder instead from the zip. Setting a test folder will always export to this folder first before copying the files over to the target (or skip this step if <em>Publish Result</em> is deactivated).</p>
<p><img alt=AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/659f94d0acc90feb.png” loading=“lazy” decoding=“async”>

Once done developing, press Publish to package the folder into a zip and copy it into the Templates directory.

It is strongly recommended to use a dedicated external folder though for storing custom templates since the tool is usually updated by removing the full installation, which would then also remove the custom templates. This can be specified under Settings/Locations 🡪 Custom HTML Templates. Once set, all new and modified templates will automatically be stored there.

Template Language

Files of type .html, .js, .csv, .txt and .md will be parsed by the template engine and any placeholders will be replaced. The engine used is Scriban. It is a simple but powerful language supporting many programming constructs, variables, include files and more. Below is an example how to iterate over all packages.

A computer screen shot of text
<p>AI-generated content may be incorrect.“ src=“/tools/assetinventory/docs/media/bb1d430b1405ce83.png” loading=“lazy” decoding=“async”></p></p>
<p>A number of predefined variables exist which can be accessed:</p>
<ul><li><strong>dataPath</strong>: path to the json files</li><li><strong>imagePath</strong>: path to the preview images</li><li><strong>pageSize</strong>: number of results per page</li><li><strong>hasFilesData</strong>: true if the current package has files indexed</li><li><strong>internalIdsOnly</strong>: true if only the internal id should be used for detail pages</li><li><strong>packages</strong>: all packages selected for export</li><li><strong>package</strong>: the currently selected package (e.g. on detail pages)</li><li><strong>packageFiles</strong>: all files of the current package</li></ul>
<p>Some files inside a template trigger special functionality:</p>
<ul><li><strong>packages.json</strong>: will contain the data about all packages</li><li><strong>files.json</strong>: will contain minified data about all packages</li><li><strong>package_details.html</strong>: will be replaced with files of the form <em>package_412.html</em> where 412 is the internal Id of a package for each package. If the asset is from the Asset Store, the name fill be <em>package_f72632.html</em> using the foreign Id of the package if not set otherwise by the environment setting <em>internalIdsOnly</em>.</li></ul>
<h2 id=Scanning for Freebies

When purchasing Asset Store packages, authors sometimes grant reduced or even free access to other packages of them. Also, some authors sell bundles. When purchasing a bundle, a linked list of other packages becomes available for free. These packages are typically listed in the description.

The Asset Store does not show these free packs though easily and one has to actually go to every linked package in order to claim them.

This can lead to the common situation, that many packages remain unclaimed although they are already owned. When not claimed, the tool will not index them to make the contents available for use.

A screenshot of a black background
<p>Description automatically generated“ src=“/tools/assetinventory/docs/media/476103abb7854f2c.png” loading=“lazy” decoding=“async”>  <img src=

Using the Freebie scanner action will check all your purchased packages, if they contain any links to other assets in the description and will show these as potential candidates that you can claim.

Asset Inventory documentation screenshot

Since the Asset Store does not provide an API to detect this automatically, you will need to check the results manually on the Asset Store website but can easily open the identified candidates from the log file or, if using the force mode, all will be opened automatically as tabs. Keep in mind, that only a fully loaded tab will show the correct result as the Asset Store changes the price only right at the end of the loading process.