> For the complete documentation index, see [llms.txt](https://sunfish-studios.gitbook.io/main/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sunfish-studios.gitbook.io/main/vehicle/secondary-components/hint-system.md).

# Hint System

<figure><img src="/files/ZedW1tzLZv30yWxWRXXN" alt=""><figcaption></figcaption></figure>

When introducing new mechanics, like a fishing system, it's usually a good idea to present a brief tutorial explaining to the player how the mechanic works, this is where the hint system comes in.\
\
This is a reusable, multi-panel tutorial system designed to introduce players to new mechanics. It guides users through a sequence of panels with smooth transitions, and persistent “already seen” tracking via `PlayerPrefs`.

***

#### 🔧 Inspector Settings

<figure><img src="/files/vnsvrFSsDcaBeuVHrKwG" alt="" width="388"><figcaption></figcaption></figure>

**Timing**

* **Fade In/Out Duration**\
  Duration (in seconds) for the global panel fade-in and fade-out animations.

**UI References**

* **Panels**\
  Array of `CanvasGroup`s—each representing one step in the tutorial. Panels are cycled sequentially.
* **Finish Button**\
  Reference to the “Close”/“Got It” button on the *last* panel. Triggers panel dismissal and game unpausing.
* **Toggle Paused**\
  `BoolReference` (e.g., `VariableReference<bool>` from Malbers) bound to your global pause state (e.g., used by `AnimalController`). Set to `true` while the tutorial is active.

**Debug / Testing**

* **Always Show**\
  If enabled, skips the `PlayerPrefs` check and displays the tutorial every time—ideal for development and QA.

{% hint style="success" %}
*Internally uses `PlayerPrefs.GetInt("HasSeenFishingHint", 0)` to track completion. Set to `1` after the player finishes.*
{% endhint %}

<figure><img src="/files/GMmmiySWsR134ZAbeE5y" alt=""><figcaption></figcaption></figure>

***

#### 💡 **Key Features**

* **Crossfade Navigation**: Smooth transitions between panels using simultaneous fade-out/fade-in.
* **Time-Scale Independent**: Uses `Time.unscaledDeltaTime`—works correctly even when the game is paused.
* **Auto-Focus Support**: Detects `AutoFocusButton` on panels for accessibility/navigation (e.g., gamepad/keyboard support).
* **Pause Integration**: Automatically pauses the game on entry and resumes on exit via `togglePaused`.
* **Persistent State**: Remembers if the player has completed the tutorial, unless overridden by `Always Show`.

#### 🎯Usage&#x20;

The Fishing Rod, via On Picked Game event calls `FishingInteraction()`.

<figure><img src="/files/N9A4KDnfg6MU415bqUVB" alt="" width="379"><figcaption></figcaption></figure>

<br>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://sunfish-studios.gitbook.io/main/vehicle/secondary-components/hint-system.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
