Skip to content

Latest commit

 

History

History
39 lines (29 loc) · 1.67 KB

TypewriterText.md

File metadata and controls

39 lines (29 loc) · 1.67 KB

Typewriter Rich Text Widget

This base User Widget provides you with a rich text box that plays text like a typewriter, one character at a time, with a configurable speed. You can skip to the end of the text if needed.

Typewriter Text

Notable features

  • Pre-calculates line breaks so that the text doesn't start to play a word near the end of the line then "jump down", it always knows where to start
  • Pre-calculates the desired height of the text so that if embedded in a flexible height container, the height is correct before anything is played
  • Supports decorators like inline images
  • Respects explicit line breaks in your text
  • Pauses on sentence terminators within a multi-sentence block (configurable)

Usage

Due to a quirk of the API used for sizing, this isn't a straight URichTextBlock subclass you can drop straight in. Instead, you need to:

  1. Create a Widget Blueprint, subclassed from UTypewriterTextWidget
  2. Place within it a URichTextBlockForTypewriter, named LineText (for binding)
  3. Style the nested rich text box the way you want
  4. Then, in your other Widget Blueprints, make use of this UTypewriterTextWidget subclass in place of a rich text box
  5. Call the Play Line and Skip To Line End functions instead of Set Text to make use of the typewriter effect.
  6. Listen to the On Typewriter Line Finished event to know when the typewriter effect has finished, or the line has been skipped to the end.

Credits

This was derived from Sam Bloomberg's work with some enhancements / adjustments. Both works are released under the MIT license.