facebook twitter hatena line email

Unity/UIInputField

提供: 初心者エンジニアの簡易メモ
2022年1月2日 (日) 21:27時点におけるAdmin (トーク | 投稿記録)による版 (Unity2017.xでandroidでInputFieldに日本語入力させる)

移動: 案内検索

入力欄に文字列を入れる

GameObject objtext = GameObject.Find ("Canvas/InputField");
objtext.GetComponent<InputField> ().text = name;

入力欄に文字列を取得

GameObject objtext = GameObject.Find ("Canvas/InputField");
Debug.Log(objtext.GetComponent<InputField>().text);

or

GameObject objtext = GameObject.Find ("Canvas/InputField/Text");
Debug.Log(objtext.GetComponent<Text>().text);

数字のみに限定する

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

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

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

InputFieldに日本語入力させる

LineTypeをMulti Line Submitへ

Unity2017.xでandroidでInputFieldに日本語入力させる

https://qiita.com/Gok/items/35329c717203e86774f0

InputFieldの下のTextに参考pageのコードをアタッチする

2020.3.21f1でも日本語が入力できなかったので、この方法で対応できた。

入力補助非表示機能

Hide Mobile Input
モバイル端末でスクリーンキーボードにアタッチされる標準の入力フィールドを非表示にします。iOS のみで有効。

とあるがiPhoneXSで表示された・・・。他のiphoneでは試してない。

入力変更・確定があった時のイベント

// 入力が確定した時
InputField input = GameObject.Find("/Canvas/InputField").GetComponent<InputField>();
input.onEndEdit.AddListener(delegate {
           GameObject.Find("/Canvas/CheckText").GetComponent<Text>().text = "onEndEdit";
});
// 文字の変更があった時
input.onValueChanged.AddListener(delegate {
           GameObject.Find("/Canvas/CheckText").GetComponent<Text>().text = "onValueChanged";
});

入力変更・確定があった時のイベント(別メソッドで実行)

void Start() {
    InputField input = GameObject.Find("/Canvas/InputField").GetComponent<InputField>();
    input.onValueChanged.AddListener(OnValueChanged);
}
void OnValueChanged(string value)
{
    Debug.Log(value);// 変更後の文字列
}

フォーカスが外れた時

textField.onEndEdit.AddListener(delegate {
    Debug.Log(textField.text);
});

フォーカス(focus)移動

InputField inputnext = GameObject.Find("/Canvas/InputFieldNext").GetComponent<InputField>();
inputnext.ActivateInputField();

参考:https://gamefbb.com/%E3%80%90unity%E3%80%91inputfield%E3%81%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%82%AB%E3%82%B9%E3%81%99%E3%82%8B/

フォーカスを外す

適当なボタンにフォーカスすれば、テキスト側のフォーカスは、外れる。

GameObject.Find("HogeButton").GetComponent<Button>().Select();

テキストを削除

InputField inputnext = GameObject.Find("/Canvas/InputFieldNext").GetComponent<InputField>();
inputnext.text = "";

スマホ端末で、下に入力欄を出さない

InputFieldでHide Mobile Inputにチェックを入れる

公式にはiOSでしかサポートされてないとある。 https://docs.unity3d.com/ja/2020.3/Manual/script-InputField.html

androidでは、オフでも、入力文字が、出なかった。(自分が持ってるasus端末だけかも?)

参考

InputField公式2018.4:https://docs.unity3d.com/ja/2018.4/ScriptReference/UI.InputField.ContentType.html

InputField公式5.3:https://docs.unity3d.com/ja/530/Manual/script-InputField.html