ほとんどの場合、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 つのキーボードプロパティが存在し、キーボードの表示/非表示の状態および画面上のサイズを決定します。
| プロパティ: | 機能: |
|---|---|
| visible | キーボードが画面に完全に表示されていて、かつ文字が入力できる場合に true を返します。 |
| area | キーボードの位置とサイズを返します。 |
| active | キーボードがアクティベートされている場合に true を返します。このプロパティは静的プロパティではありません。キーボードのインスタンスがないと、このプロパティを使用できません。 |
TouchScreenKeyboard.area は、キーボードが完全に画面に表示されるまで、位置とサイズが 0 に設定された Rect を返すことに注意してください。TouchScreenKeyboard.Open() の直後にこの値をクエリすることは回避する必要があります。キーボードイベントの順序は次のとおりです。
入力した記号が非表示になるようにキーボードを設定できます。これはユーザーにセンシティブな情報 (パスワードなど) の入力を求めるときに使用してください。セキュリティのかかったテキスト入力を有効化して、キーボードをスクリプトから開くためには、次のコードを使用します。
TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true);
通常の不透明な背景ではなく、半透明の黒い背景でキーボードを表示する場合は、次のように TouchScreenKeyboard.Open() を呼び出します:
TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false, true, true);