Skip to content

SusSpeechBubble

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)

Open in Playground

SusKit · World

Props

NameTypeDefault
TextProp<string>""v-model
SpeakerNameProp<string>""
TailProp<string>"down"
MaxWidthProp<float>240f
AutoHideSecondsProp<float>0f
RevealProp<string>"Instant"
CharsPerSecondProp<float>30f

Slots

No slots.

Events

NameFieldPayload
HiddenOnHidden

Style hooks

USS class contract — override appearance without touching C#. States toggle via these classes:

  • sus-speech-bubble
  • sus-speech-bubble__chrome
  • sus-speech-bubble__speaker
  • sus-speech-bubble__speaker--empty
  • sus-speech-bubble__tail
  • sus-speech-bubble__text
  • sus-speech-bubble--hidden
  • sus-speech-bubble--tail-down
  • sus-speech-bubble--tail-left
  • sus-speech-bubble--tail-none
  • sus-speech-bubble--tail-right
  • sus-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 / APIRole
Text / SpeakerNameBody and optional name label
TailUSS tail direction class
MaxWidthSoft width cap
AutoHideSecondsHide after reveal (0 = manual)
Reveal / CharsPerSecondSame modes as SusDialogueBox
Show / Hide / OnHiddenVisibility lifecycle

Notes

  • Storybook story Speech Bubble (speech-bubble).
  • Hub shot kit-speech-bubble.png — showcase, captured live from Play mode.