【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つボタンを追加して、そのイベントで、このメソッドを実行してもいいですね
ディスカッション
コメント一覧
まだ、コメントがありません