【Unity】UIのInputFieldで文字入力数を制限する

標準で制限の機能があります
それを使うのが一番簡単ですが、C#コードでのパターンもついでに考えてみます

1つ目は、簡単な方法になります
2つ目は、コードで制限する方法になります

簡単な方法

インスペクターで文字数制限を設定することができます

コードで制限

シーンの構成

入力完了イベントが用意されていますので、使います
Unityのインスペクターからのイベント設定をしたことがある方(ボタンのイベント登録等)は同じです
実行されるイベントはコンポーネントとして追加されたスクリプトに記述しておきます

コード

入力された文字列から3文字だけ取り出します
3文字以上入力しようとしても受け付けてもらえません

using TMPro;
using UnityEngine;

public class LimitCheck : MonoBehaviour
{
    [SerializeField]
    private TMP_InputField inputText;

    public void CheckTextCount()
    {
        Debug.Log(inputText.text.Length);

        if (inputText.text.Length > 3)
        {
            inputText.text = inputText.text[..3];
        }
    }
}

解説

private TMP_InputField inputText;

インプットフィールドの文字はText型では変更できません
なのでTMP_InputField型にする必要があります
従来の(レガシーの)InputFieldの場合はInputField型にします

if (inputText.text.Length > 3)

入力文字数が3以上の場合の条件式です

inputText.text[..3];

入力値から左から3文字取得(切り出し)するコードです

inputText.text.SubString(0,3);

と同じです

決定ボタンでの対応

今回は、入力するたびにチェックするイベントを使っていますが、1つボタンを追加して、そのイベントで、このメソッドを実行してもいいですね

Unity

Posted by hidepon