【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つボタンを追加して、そのイベントで、このメソッドを実行してもいいですね
訪問数 337 回, 今日の訪問数 1回





ディスカッション
コメント一覧
まだ、コメントがありません