facebook twitter hatena line email

「Unity/UIInputField」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(入力変更・確定があった時のイベント(別メソッドで実行))
(フォーカス判定)
 
(同じ利用者による、間の14版が非表示)
行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);
  
 
==数字のみに限定する==
 
==数字のみに限定する==
 
  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;
  
 
==InputFieldに日本語入力させる==
 
==InputFieldに日本語入力させる==
行21: 行24:
  
 
InputFieldの下のTextに参考pageのコードをアタッチする
 
InputFieldの下のTextに参考pageのコードをアタッチする
 +
 +
2020.3.17f1でも日本語が入力できなかったので、この方法で対応できた。
 +
 +
[[Unity/Csharp/キー入力]] [ショートカット]
  
 
==入力補助非表示機能==
 
==入力補助非表示機能==
行47: 行54:
 
     Debug.Log(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();
 +
 +
==フォーカス判定==
 +
<pre>
 +
InputField inputField;
 +
return inputField.isFocused;
 +
</pre>
 +
 +
==テキストを削除==
 +
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公式:https://docs.unity3d.com/ja/530/Manual/script-InputField.html
+
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

2023年1月24日 (火) 15:41時点における最新版

入力欄に文字列を入れる

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.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();

参考: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 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