# DialoguePresenterBase

Class in [Yarn.Unity](https://docs.yarnspinner.dev/api/csharp/yarn.unity)

Inherits from `UnityEngine.MonoBehaviour`

## Summary

A `UnityEngine.MonoBehaviour` that can present lines and options to the user, when it receives them from a [DialogueRunner](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguerunner) .

```csharp
public abstract class DialoguePresenterBase : MonoBehaviour
```

## Remarks

When the Dialogue Runner encounters content that the user should see - that is, lines or options - it sends that content to all of the dialogue presenters stored in `DialogueRunner.dialogueViews`. The Dialogue Runner then waits until all Dialogue Presenters have reported that they have finished presenting the content.

To use this class, subclass it, and implement its required methods. Once you have written your subclass, attach it as a component to a `UnityEngine.GameObject`, and add this game object to the list of Dialogue presenters in your scene's [DialogueRunner](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguerunner).

Dialogue Presenters do not need to handle every kind of content that the Dialogue Runner might produce. For example, you might have one Dialogue Presenter that handles Lines, and another that handles Options. The built-in `LineView` class is an example of this, in that it only handles Lines and does nothing when it receives Options.

You may also have multiple Dialogue Presenters that handle the *same* kind of content. For example, you may have a Dialogue Presenter that receives Lines and uses them to play voice-over audio, and a second Dialogue Presenter that also receives Lines and uses them to display on-screen subtitles.

## Methods

| Name                                                                                                                                                                                                | Description                                                                                                                                                                              |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [OnDialogueCompleteAsync()](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguepresenterbase/yarn.unity.dialoguepresenterbase.ondialoguecompleteasync)                           | Called by the [DialogueRunner](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguerunner) to signal that the dialogue has ended, and no more lines will be delivered. |
| [OnDialogueStartedAsync()](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguepresenterbase/yarn.unity.dialoguepresenterbase.ondialoguestartedasync)                             | Called by the [DialogueRunner](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguerunner) to signal that dialogue has started.                                        |
| [OnNodeEnter(string)](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguepresenterbase/yarn.unity.dialoguepresenterbase.onnodeenter)                                             |                                                                                                                                                                                          |
| [OnNodeExit(string)](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguepresenterbase/yarn.unity.dialoguepresenterbase.onnodeexit)                                               |                                                                                                                                                                                          |
| [RunLineAsync(LocalizedLine,LineCancellationToken)](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguepresenterbase/yarn.unity.dialoguepresenterbase.runlineasync)              | Called by the [DialogueRunner](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguerunner) to signal that a line should be displayed to the user.                      |
| [RunOptionsAsync(DialogueOption\[\],CancellationToken)](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguepresenterbase/yarn.unity.dialoguepresenterbase.runoptionsasync-1)     | Called by the [DialogueRunner](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguerunner) to signal that a set of options should be displayed to the user.            |
| [RunOptionsAsync(DialogueOption\[\],LineCancellationToken)](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguepresenterbase/yarn.unity.dialoguepresenterbase.runoptionsasync-2) |                                                                                                                                                                                          |

## Properties

| Name                                                                                                                                          | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| [Typewriter](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.dialoguepresenterbase/yarn.unity.dialoguepresenterbase.typewriter) |             |

## See Also

* [LineProviderBehaviour](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.lineproviderbehaviour): A `UnityEngine.MonoBehaviour` that produces [LocalizedLine](https://docs.yarnspinner.dev/api/csharp/yarn.unity/yarn.unity.localizedline) s, for use in Dialogue Presenters.
* DialogueRunner.dialogueViews
