Export type

This section describes high-level export strategies aimed at broad selection of resources. For fine-grained control over exported assets, please refer to Assets includes & excludes section.

Motivation

Unity projects come in all shapes and forms: some are built from scratch recently using latest Unity versions, some come with artifacts from the multiple years in which developers worked on them. One of the diverse approaches to building projects in Unity revovles around asset management.

While it's considered good practice to have strong links between scenes or scriptable objects and secondary assets, like prefabs, textures and sounds, many people still resort to good old Resources.Load API to dynamically load some content into the game.

Export types in Luna

Because of the above, Luna has two distinct strategies of detecting which assets should make it into the build:

troubleshooting-luna-ui-export-type

Default export strategy

The default export type, named Everything collects all data in use by the selected scenes, as well as all prefabs, textures, animations and other resources found in the project. While this stategy often procudes undesirably big builds, especially with games which have a lot of assets, it is a preferable starting point because it helps avoid issues caused by misconfiguration and eases debugging of first exports.

Alternative export strategy

Another export strategy, named Selected items allows developers to choose what kinds of items to gather with a more granularity and control. The available options are:

  • Scenes: This will export selected scenes
  • Resources: This will export all assets founds in Resources folder of the project
  • Prefabs: This will export all prefabs of the project
  • Scriptable Objects: This will export all scriptable objects of the project
Luna always makes best effort to keep things valid, thus if an asset gets into an exported set in any way (by being on a scene or residing in a prefab), it is going to be exported along with any explicit dependencies it uses.

That is, if a scene is using a prefab, developers don't have to explicitely include this prefab into an export - Luna will discover this dependency and export it automatically.

This strategy comes in handy at the last stage of the production process, where developers are trying to optimise the final product for size and performance.