SusSpeechBubble

World-space speech bubble with tail, optional auto-hide, and SusTextFx reveal; bind to a 3D transform externally via WorldSpaceService — the bubble has no camera projection.
Package
SusKit · World (commercial)
Props
| Name | Type | Default | |
|---|---|---|---|
Text | Prop<string> | "" | v-model |
SpeakerName | Prop<string> | "" | |
Tail | Prop<string> | "down" | |
MaxWidth | Prop<float> | 240f | |
AutoHideSeconds | Prop<float> | 0f | |
Reveal | Prop<string> | "Instant" | |
CharsPerSecond | Prop<float> | 30f |
Slots
No slots.
Events
| Name | Field | Payload |
|---|---|---|
Hidden | OnHidden | — |
Style hooks
USS class contract — override appearance without touching C#. States toggle via these classes:
sus-speech-bubblesus-speech-bubble__chromesus-speech-bubble__speakersus-speech-bubble__speaker--emptysus-speech-bubble__tailsus-speech-bubble__textsus-speech-bubble--hiddensus-speech-bubble--tail-downsus-speech-bubble--tail-leftsus-speech-bubble--tail-nonesus-speech-bubble--tail-rightsus-speech-bubble--tail-up
Usage
Same reveal path as dialogue (SusTextFx). World follow is external — call WorldSpaceService.BindToWorld on the bubble (or its host); the component does not project a camera.
csharp
var bubble = new SusSpeechBubble();
bubble.Tail.Value = "down"; // down | up | left | right | none
bubble.MaxWidth.Value = 240f;
bubble.AutoHideSeconds.Value = 3f; // 0 = stay until Hide()
bubble.Reveal.Value = "PerChar";
bubble.Show("Over here!", "Scout");
// WorldSpaceService.BindToWorld(bubble, unitTransform, offset);
bubble.OnHidden = () => { /* pooled / disposed */ };| Prop / API | Role |
|---|---|
Text / SpeakerName | Body and optional name label |
Tail | USS tail direction class |
MaxWidth | Soft width cap |
AutoHideSeconds | Hide after reveal (0 = manual) |
Reveal / CharsPerSecond | Same modes as SusDialogueBox |
Show / Hide / OnHidden | Visibility lifecycle |
Notes
- Storybook story Speech Bubble (
speech-bubble). - Hub shot
kit-speech-bubble.png— showcase, captured live from Play mode.