facebook twitter hatena line email

「Unity/TMPro/InputField」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(入力欄を選択したときに***から通常文字に変える)
 
行52: 行52:
 
===アルファベットのみに限定===
 
===アルファベットのみに限定===
 
  objtext.GetComponent<TMP_InputField>().contentType = TMP_InputField.ContentType.Alphanumeric;
 
  objtext.GetComponent<TMP_InputField>().contentType = TMP_InputField.ContentType.Alphanumeric;
 +
 +
==テキストが変更された時のイベント==
 +
<pre>
 +
TMP_InputField nameInputField = GameObject.Find("UserNameInputField").GetComponent<TMP_InputField>();
 +
nameInputField.onValueChanged.AddListener(delegate
 +
{
 +
    Debug.Log(nameInputField.text);
 +
});
 +
</pre>

2026年2月4日 (水) 10:44時点における最新版

TMPのInputFieldサンプル

using TMPro;
TMP_InputField inputField = null;
inputField.onValueChanged.AddListener(delegate {
  Debug.Log(inputField.text);
});

Textオブジェクトへのアクセス

GameObject.Find("/Canvas/InputField/Text Area/Text").transform.GetComponent<TextMeshProUGUI>().text = "test";

取得時に文末に"\u200b"がつく

"InputField/Text Area/Text"で取得した場合には、文末に"\u200b"がつくが、置換すればよい。

return GameObject.Find("/Canvas/InputField/Text Area/Text").transform.GetComponent<TextMeshProUGUI>().text.Replace("\u200b", "");

もしくは、InputFieldのTMP_InputFieldのtextを取得すれば良い。

return GameObject.Find("/Canvas/InputField").GetComponent<TMP_InputField>().text;

入力欄を選択したときに***から通常文字に変える

// フォーカスいた時に***から正常に表示されるように
TMP_InputField userIdInputField = GameObject.Find("UserIdInputField").GetComponent<TMP_InputField>();
userIdInputField.contentType = TMP_InputField.ContentType.Password;
userIdInputField.text = "test";
userIdInputField.onSelect.AddListener(delegate {
    userIdInputField.contentType = TMP_InputField.ContentType.Standard;
});

入力欄を選択したときにクリップボードにコピー

GUIUtility.systemCopyBufferを使う

TMP_InputField userIdInputField = GameObject.Find("UserIdInputField").GetComponent<TMP_InputField>();
userIdInputField.onSelect.AddListener(delegate {
    GUIUtility.systemCopyBuffer = userIdInputField.text
});

入力できないように

userIdInputField.interactable = false;

ContentTypeについて

IntegerNumberとDecimalNumberが、あるが、 Integerは数字のみで、DecimalNumberは小数点も入れられる。

参考:https://docs.unity3d.com/ja/2018.4/ScriptReference/UI.InputField.ContentType.html

数字のみに限定する

GameObject objtext = GameObject.Find("Canvas/InputField");
objtext.GetComponent<TMP_InputField>().contentType = TMP_InputField.ContentType.IntegerNumber;

アルファベットのみに限定

objtext.GetComponent<TMP_InputField>().contentType = TMP_InputField.ContentType.Alphanumeric;

テキストが変更された時のイベント

TMP_InputField nameInputField = GameObject.Find("UserNameInputField").GetComponent<TMP_InputField>();
nameInputField.onValueChanged.AddListener(delegate
{
    Debug.Log(nameInputField.text);
});