Assets
Was this helpful?
Was this helpful?
While Bevy as a whole has assets, Yarn Spinner can associate specific assets with lines. These are always , such as voiceovers.
Before we jump into assets, let's first help you out if you don't care about localization. The mechanism in place for this is line metadata, which are strings you can add to Yarn lines after a hashtag:
A will be able to read the metadata "smiling", "laughing", and "smiling" again from LocalizedLine::metadata
and accordingly load things like character portraits. These annotations will also be written into the "comment" field of strings files, which are explained in the chapter .
Assets are fetched from the filesystem by structs implementing AssetProvider
. They need to be registered when creating a DialogueRunner
. For example, if you use the audio_assets
feature, you can register an asset provider for audio files by modifying the code found in the like this:
The bundled example Dialogue View does not play any audio files, so you will need to write your own to make use of this feature.
The AudioAssetProvider
itself is just a specialized . As the name suggests, it serves any assets based on their extension:
The (and, by extension, the AudioAssetProvider
) will search for their assets in the directory assets/dialogue/<language>/<line-id.extension>
. So, for example, an AudioAssetProvider
serving up a voiceover for the line with the ID 41239 while the game is set to the language "de-CH" will search for assets/dialogue/de-CH/41239.mp3
.
Finally, you can implement yourself with whatever custom behavior you desire. Check out the trait's documentation for the necessary methods.