ほとんどの場合、Unity は GUI 要素のキーボード入力を自動的にハンドリングしますがスクリプトからの要求によりキーボードを表示するのも簡単です。
ユーザーが編集可能な GUI 要素をタップしたときキーボードは自動表示されます。現在では GUI.TextField、GUI.TextArea、GUI.PasswordField によりキーボードが表示されます。詳細については GUI クラス を参照してください。
TouchScreenKeyboard.Open() 関数を使用してキーボードを開きます。この関数が使用する引数については TouchScreenKeyboard スクリプティングリファレンスを参照してください。
キーボードは次の種類をサポートしています。
プロパティー | 機能 |
---|---|
TouchScreenKeyboardType.Default | 文字列。数字と記号のキーボードに切り替えできます。 |
TouchScreenKeyboardType.ASCIICapable | 文字列。数字と記号のキーボードに切り替えできます。 |
TouchScreenKeyboardType.NumbersAndPunctuation | 数字と記号。文字列のキーボードに切り替えできます。 |
TouchScreenKeyboardType.URL | スラッシュ記号と .com ボタンのついた文字列。数字と記号のキーボードに切り替えできます。 |
TouchScreenKeyboardType.NumberPad | 0 から 9 までの数字のみ。 |
TouchScreenKeyboardType.PhonePad | 電話番号を入力するためのキーボード。 |
TouchScreenKeyboardType.NamePhonePad | 文字列。電話番号を入力するためのキーボードに切り替えできます。 |
TouchScreenKeyboardType.EmailAddress | @ 記号のついた文字列。数字と記号のキーボードに切り替えできます。 |
デフォルトでは、キーボードが表示された後に編集ボックスが作成されてキーボードの上に配置されます。ユーザーが入力しているテキストのプレビューとして動作し、ユーザーはテキストを常に見ることができます。しかし、TouchScreenKeyboard.hideInput を true にすることで、テキストプレビューを無効化できます。特定のキーボードの種類および入力モードでのみ動作することに注意してください。例えば、電話キーパッドや複数行テキスト入力では動作しません。そういったケースでは、編集ボックスは必ず表示されます。TouchScreenKeyboard.hideInput はグローバル変数ですべてのキーボードに影響します。
TouchScreenKeyboard には 3 つのキーボードプロパティーにより、キーボードの Visibility ステータスおよび画面上のサイズを決定します。
プロパティー | 機能 |
---|---|
visible | キーボードが画面に完全に表示されていて、かつ文字列が入力できる場合に true を返します。 |
area | キーボードの位置とサイズを返します。 |
active | キーボードが有効化されている場合に true を返します。このプロパティーは static プロパティーではありません。キーボードのインスタンスがないと、このプロパティーを使用できません。 |
TouchScreenKeyboard.area は、キーボードが完全に画面に表示されるまで、位置とサイズが 0 にセットされた rect を返すことに注意してください。TouchScreenKeyboard.Open の直後に値を取得すべきではありません。キーボードイベントのステップは次のとおりです。
キーボード入力が行われるときに入力した文字を隠すことが可能です。これはユーザーにセンシティブな情報(パスワードなど)の入力を求めるときに使用してください。セキュリティのかかったテキスト入力を有効化して、キーボードをスクリプトから開くためには、次のコードを使用します。
TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true);
キーボードで、通常の不透明な背景ではなく、部分的に透明で黒い背景としたい場合、次のように TouchScreenKeyboard.Open を呼び出します:
TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, true);