Hint Database
ScriptableObject asset for managing loading screen tip and hint entries
Overview
Hint Database is a ScriptableObject that holds a list of HintEntry items, each with body text and an optional icon sprite. Hints cycle during loading and are displayed via the hintText and hintIcon references on the LoadingScreen component.
Keeping hints in a separate asset makes it easy to localize content, swap tip sets between levels, or share the same database across multiple loading screen prefabs.
Creating a Database
Right-click in the Project window
Select Create -> Evo -> Loader -> Hint Database
Add entries to the Hints list — each entry has a text field and an optional Icon
Assign the asset to the Hint Database field on your loading screens
Properties
| Name | Type | Description |
|---|---|---|
selectionMode | ContentSelectionMode | How the next hint is picked. |
hints | List<HintEntry> | The hint entries to cycle through. |
Hint Entry Fields
| Field | Type | Description |
|---|---|---|
text | string | Body text displayed during loading. |
icon | Sprite | Optional icon shown alongside the text. If null, the icon object is hidden automatically. |
table | LocalizationTable | Localization table to use (requires Evo Localization to be imported). |
tableKey | string | Key within the localization table (requires Evo Localization to be imported). |
When a localization table and key are both set, the localized string takes priority over the text field. If no localized output is returned, it falls back to text.
Using Multiple Databases
You can assign different databases to different loading screen prefabs — for example, a boss encounter screen with thematic artwork versus a generic level transition. Because databases are ScriptableObjects, they can be shared, duplicated, and edited independently.
Code Example
using Evo.Loader;
using UnityEngine;
public class HintDatabaseExample : MonoBehaviour
{
public HintDatabase hints;
void Start()
{
// Clone the asset before modifying to avoid affecting the source
HintDatabase runtimeDB = Instantiate(hints);
runtimeDB.hints.Add(new HintDatabase.HintEntry
{
text = "Tip: Dodge rolling has invincibility frames.",
});
runtimeDB.hints.Add(new HintDatabase.HintEntry
{
text = "Tip: Hold the interact button to pick up heavy objects.",
});
}
}Modifying a ScriptableObject asset directly at runtime persists across sessions in the Editor.
Use Instantiate(database) to create a runtime clone if you need to add entries dynamically without affecting the source asset.