「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);
});
