(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


TMPで表示する文字数やワード数、行数を簡単に設定する方法【Unity】【TextMesh Pro】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2022.3.32f1


TextMeshProのmaxVisibleCharacters

TextMeshProにはmaxVisibleCharactersという表示する文字数を指定するプロパティがあります。

(Inspectorには表示されていない)

//最初の7文字だけ表示する
GetComponent<TextMeshProUGUI>().maxVisibleCharacters = 7;


同様に、表示するワード数を指定するmaxVisibleWordsや、

表示する行数を指定するmaxVisibleLinesもあります。


これらはあくまで表示するものを変えるだけで、テキストの内容自体は変えないので、

以下のように徐々に表示する文字数を増やせば、文字送りみたいな事も出来ます。

using TMPro;
using UnityEngine;

/// <summary>
/// 一定時間ごとに文字送りを進めるクラス
/// </summary>
public class TextTyper : MonoBehaviour {

  private TextMeshProUGUI _textMeshPro;
  private readonly float _charDisplayInterval = 0.02f;//1文字あたりの表示間隔(秒)
    
  private float _timer = 0f;
  private int _visibleCharacters = 0;

  //=================================================================================
  //初期化
  //=================================================================================

  private void Start(){
    //テキスト取得、文字非表示
    _textMeshPro = GetComponent<TextMeshProUGUI>();
    _textMeshPro.maxVisibleCharacters = 0;
  }
  
  //=================================================================================
  //更新
  //=================================================================================
  
  private void Update() {
    //終了チェック
    if (_textMeshPro.maxVisibleCharacters >= _textMeshPro.text.Length){
      return;
    }
    
    //タイマーを更新
    _timer += Time.deltaTime;

    //指定した間隔ごとに文字を1つ進める
    if (_timer >= _charDisplayInterval){
      _timer = 0f;  // タイマーをリセット
      _visibleCharacters++;
            
      //文字数を更新
      _textMeshPro.maxVisibleCharacters = _visibleCharacters;
    }
  }

}