目次
はじめに
UI を作っていると
- 入力欄が未入力かチェックしたい
- テキストが設定されていない場合は非表示にしたい
- 空ならボタンを押せなくしたい
といった場面が必ず出てきます。
特にTextMeshProを使っていると「どのプロパティを見ればいいの?」と一瞬迷いがちです。
この記事では、表示用テキスト(TextMeshProUGUI) について正しい空判定の方法を解説します。
空文字かどうか判定する方法
TextMeshProで判定すべきプロパティは「text」です。この中身に何が入ってるかを判定してあげるだけでOKです。
この文字列が、
null- 空文字
"" - 空白や改行だけ
かどうかをチェックします。
表示用テキスト(TextMeshProUGUI)の空判定
ラベルや説明文などに使うTextMeshProUGUI(TMP_Text) の場合
using TMPro;
if (string.IsNullOrEmpty(textMeshProUGUI.text))
{
// テキストは空
}「string.IsNullOrEmpty」は何を判定しているのかというと
null""(完全な空文字
を「空」と判断しています。
注意点としてこの方法だと、
- ” ” // スペースだけ
- “\n” // 改行だけ
は 「空ではない扱い」になります。
ユーザー入力を扱う場合は空白だけの入力も「未入力」としたいことがほとんどです。
その場合は、「IsNullOrWhiteSpace」を使います。
using TMPro;
if (string.IsNullOrWhiteSpace(inputField.text))
{
// 未入力(空・空白・改行)
}このメソッドは、
null""" "(スペースだけ)"\n"(改行だけ)
を すべて空扱いしてくれます。入力チェックではこれ一択と言ってもいいぐらい便利です。
簡単に「text == "" 」で判定してしまうと一見動きますが、
nullに弱い- 空白・改行を判定できない
という欠点があります。
安全な書き方をしたいのであれば
if (string.IsNullOrWhiteSpace(tmp.text))
{
Debug.Log("テキストが未入力です");
}のようにすると
nullでも落ちない- 表示用・入力用どちらでも使える
- 将来の仕様変更にも強い
バグや修正に強いコードにすることができます。
まとめ
TextMeshPro で「テキストが空かどうか」を判定するなら
| 使う場面 | おすすめ |
|---|---|
| 表示テキスト | IsNullOrEmpty |
| 入力チェック | IsNullOrWhiteSpace |
| 迷ったら | IsNullOrWhiteSpace |
UI の入力チェックは地味ですが、ここを雑にするとバグの温床になります。
TextMeshPro を使う場合は「text を string メソッドで判定する」
この基本だけ覚えておけばOKです。

