Field labels
The content labels this asset carries: what it is (item, monster, story,
…) and the tier it is loaded in.
This is the last piece of the declaration that used to live outside the repo. The manifest needs it —
tiers drive preloading, labels drive the manifest queries, and a label is what makes a whole kind
answerable at all — and ContentScanner took it from the Addressables labels on each entry. That
is why "mark it as Addressable" was still the way to declare content, and why the roots could not be
the declaration until this field existed. Everything else the manifest needs is derivable: the key and
the path are here, the name and the type come from the path, the group is the root's
directoryName, and the references come from the AssetDatabase's dependency graph.
Null means "no labels", not an error: this field was added after these roots were first generated, so an entry deserialized from an older asset has none. A struct cannot initialise it here — C# 9 refuses field initialisers in a struct — and making Entry a class would change how the committed roots serialize, which is a data migration this change does not need.
public List<string> labels
Returns
- List<string>
- The content labels this asset carries: what it is (item, monster, story, …) and the tier it is loaded in. This is the last piece of the declaration that used to live outside the repo. The manifest needs it — tiers drive preloading, labels drive the manifest queries, and a label is what makes a whole kind answerable at all — and ContentScanner took it from the Addressables labels on each entry. That is why "mark it as Addressable" was still the way to declare content, and why the roots could not be the declaration until this field existed. Everything else the manifest needs is derivable: the key and the path are here, the name and the type come from the path, the group is the root's , and the references come from the AssetDatabase's dependency graph. Null means "no labels", not an error: this field was added after these roots were first generated, so an entry deserialized from an older asset has none. A struct cannot initialise it here — C# 9 refuses field initialisers in a struct — and making Entry a class would change how the committed roots serialize, which is a data migration this change does not need.