この記事でのバージョン
Unity 6000.0.34f1
はじめに
以前テキストにアニメーションを追加したり、
![]() |
文字送り(文字を最初から順番に表示する)を実装出来たりする、
![]() |
Text Animatorというアセットを紹介しました。
今回はそのText Animatorを使ってる際に、一度テキストを消してから再度表示しようと思ったら、
前のテキストが一瞬表示されしまう場合の対処法です!
![]() |
Text Animatorで前のテキストが一瞬表示されしまう場合の対処法
実はこの問題の対処法は公式のドキュメントに書いてあったりします。
追伸: キャンバスの設定によっては、テキストが 1 フレームだけちらつくことがあります。その場合は、新しいダイアログ行を表示する前とキャンバスが消えた後に、必ず tmproText.ClearMesh(true) を呼び出してください。たとえば「Continue」ボタンがある場合は、次のように実装します。
P.S. Based on how you setup your canvas, the text might flicker for one frame. If that happens, be sure to call "tmproText.ClearMesh(true)" before showing a new dialogue line, and once the canvas disappears. For example, as following if you have a "Continue" button:
どうやらTextMeshProのClearMeshを実行すればいいようだったのですが、
それだけじゃ直らなかったので、メッシュのクリア後に1フレーム待つようにしたら解決しました。
private IEnumerator ShowTextCoroutine(string text){ //前のテキスト消す、メッシュもクリア _text.text = ""; _text.ClearMesh(true); //1フーレム待つ yield return new WaitForEndOfFrame(); //テキスト表示開始 _typewriter.ShowText(text); }
//↑はコルーチンで実行
StartCoroutine(ShowTextCoroutine(text));


