「Unity/UIInputField」の版間の差分
(→フォーカス移動) |
|||
(同じ利用者による、間の11版が非表示) | |||
行5: | 行5: | ||
==入力欄に文字列を取得== | ==入力欄に文字列を取得== | ||
GameObject objtext = GameObject.Find ("Canvas/InputField"); | GameObject objtext = GameObject.Find ("Canvas/InputField"); | ||
− | Debug.Log(objtext.GetComponent<InputField> ().text); | + | Debug.Log(objtext.GetComponent<InputField>().text); |
or | or | ||
GameObject objtext = GameObject.Find ("Canvas/InputField/Text"); | GameObject objtext = GameObject.Find ("Canvas/InputField/Text"); | ||
− | Debug.Log(objtext.GetComponent<Text> ().text); | + | Debug.Log(objtext.GetComponent<Text>().text); |
− | ==数字のみに限定する== | + | ==ContentTypeについて== |
+ | IntegerNumberとDecimalNumberが、あるが、 | ||
+ | Integerは数字のみで、DecimalNumberは小数点も入れられる。 | ||
+ | |||
+ | 参考:https://docs.unity3d.com/ja/2018.4/ScriptReference/UI.InputField.ContentType.html | ||
+ | |||
+ | ===数字のみに限定する=== | ||
GameObject objtext = GameObject.Find("Canvas/InputField"); | GameObject objtext = GameObject.Find("Canvas/InputField"); | ||
objtext.GetComponent<InputField>().contentType = InputField.ContentType.IntegerNumber; | objtext.GetComponent<InputField>().contentType = InputField.ContentType.IntegerNumber; | ||
− | ==アルファベットのみに限定== | + | ===アルファベットのみに限定=== |
objtext.GetComponent<InputField>().contentType = InputField.ContentType.Alphanumeric; | objtext.GetComponent<InputField>().contentType = InputField.ContentType.Alphanumeric; | ||
行24: | 行30: | ||
InputFieldの下のTextに参考pageのコードをアタッチする | InputFieldの下のTextに参考pageのコードをアタッチする | ||
+ | |||
+ | 2020.3.17f1でも日本語が入力できなかったので、この方法で対応できた。 | ||
+ | |||
+ | [[Unity/Csharp/キー入力]] [ショートカット] | ||
==入力補助非表示機能== | ==入力補助非表示機能== | ||
行50: | 行60: | ||
Debug.Log(value);// 変更後の文字列 | Debug.Log(value);// 変更後の文字列 | ||
} | } | ||
+ | |||
+ | ==フォーカスが外れた時== | ||
+ | textField.onEndEdit.AddListener(delegate { | ||
+ | Debug.Log(textField.text); | ||
+ | }); | ||
==フォーカス(focus)移動== | ==フォーカス(focus)移動== | ||
行56: | 行71: | ||
参考: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/ | 参考: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(); | ||
+ | |||
+ | ==フォーカス判定== | ||
+ | <pre> | ||
+ | InputField inputField; | ||
+ | return inputField.isFocused; | ||
+ | </pre> | ||
==テキストを削除== | ==テキストを削除== | ||
InputField inputnext = GameObject.Find("/Canvas/InputFieldNext").GetComponent<InputField>(); | InputField inputnext = GameObject.Find("/Canvas/InputFieldNext").GetComponent<InputField>(); | ||
inputnext.text = ""; | 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 |
2024年8月24日 (土) 01:30時点における最新版
目次
入力欄に文字列を入れる
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);
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<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.17f1でも日本語が入力できなかったので、この方法で対応できた。
Unity/Csharp/キー入力 [ショートカット]
入力補助非表示機能
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();
フォーカスを外す
適当なボタンにフォーカスすれば、テキスト側のフォーカスは、外れる。
GameObject.Find("HogeButton").GetComponent<Button>().Select();
フォーカス判定
InputField inputField; return inputField.isFocused;
テキストを削除
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