Best Practices
Find all common best practices when using Text Animator for Unreal.
Every project is different, but in this page you can find some common best practices that can help you set up everything better and avoid most common issues!
Set the entire text/dialogue only once
Please try to set text just once, and use the typewriter / visibility methods to control how it appears.
If you really need to append text later in time, you can use the "AppendText" function found in the core UMG widget UAnimTextBlock.
Example
If you have a character that says "Helloooo how are you doing?", and you want to display it letter by letter, simply do: Typewriter->ShowText(FText::FromString("Helloooo how are you doing?")); and that's it! Show and hide letters dynamically
If you're building a dynamic string, you can still do that before setting its value to the typewriter/animator.
int Apples = 5;
FString PlayerName = TEXT("Bob");
// Build the dialogue string first
FString Dialogue = FString::Printf(TEXT("Hello %s, you've got %d apples"), *PlayerName, Apples);
// Then pass it to ShowText, which expects an FText
Typewriter->ShowText(FText::FromString(Dialogue));(If you're using a Dialogue System, they'll do this for you - no worries ! Integrations)
Why should I set the entire text once, instead of character by character?
Performance! (Even if you didn't have Text Animator.)
Every time you set the text, calculations have to performed for its mesh, positioning etc., and Text Animator has then to re-calculate character durations and more. This means that if you change it multiple times per second (e.g. adding more letters), you're doing these calculations every time.
To display characters one by one, you can simply set the full text once, and then start the typewriter: Show and hide letters dynamically
If you're changing something in the text editor but it's not getting updated, please let us know!