テキスト入力 link
いくつかの制限はありますが、Ren'Py ではユーザーに少量のテキストを入力させられます。これは renpy.input 関数によって実行され、この関数は入力されたテキストを返し、変数に格納したり他の処理が出来るようにします。
Linux でのテキスト入力は、インプットメソッド(IME)の対応が要らない言語に制限されています。ほとんどの西欧言語では動作しますが、中国語、日本語、韓国語では動作しない恐れがあります(訳注: v7.7.3現在 Android版以外では対応しているようです 。こちら https://akakyouryuu.com/%e9%85%8d%e5%b8%83%e7%89%a9/renpy/ にカナ漢字変換対応のスクリーンキーボードを用意しました)。
renpy.input 関数は以下のように定義されています:
- renpy.input(default='', allow=None, exclude='{}', length=None, pixel_width=None, screen='input', mask=None, copypaste=True, multiline=False, **kwargs) link
この関数を呼び出すと、プレイヤーに対してテキスト入力画面が出てきます。これは入力されたテキストを返します。
- prompt
プレイヤーに表示するプロンプトの文字列。
- default
プレイヤーによって編集される初期テキスト。
- allow
None を指定するか、テキスト入力可能な文字のリストを表す文字列を指定します。
- exclude
None を指定するか、テキスト入力を禁止する文字を含む文字列を指定します。
- length
None を指定するか、入力文字列の最大長を表す整数を指定します。
- pixel_width
None を指定するか、入力の上限幅を、入力時のテキスト表示フォントにおけるピクセル数で指定します。
- screen
入力を受け取るスクリーンの名前です。指定されないと
input
スクリーンが使用されます- mask
None でなければ、入力テキストを置き換えてパスワードを隠すようにプレイヤーに表示される1文字のテキストです。
- copypaste
True ならば、この input に対してコピーやペーストが許可されます。
- multiline
True ならば、キャレットの次の行への移動を許可します。
config.disable_input
が True なら、この関数は default を返すのみです。show_
で始まるキーワードは接頭辞を除去後画面に渡されます。Android や ウェブプラットフォームではサポートするライブラリーの制限により、この機能はアルファベット文字に制限されます。
renpy.input を用いるコードでは、標準の Python の文字列処理関数を使って入力結果を処理することがよくあります。例えば以下のコードでは、プレイヤーに名前を尋ね、前後の空白を削除しています。名前が空の場合はデフォルトの名前に置き換え、最後にユーザーに結果を表示しています。
define pov = Character("[povname]")
python:
povname = renpy.input("What is your name?", length=32)
povname = povname.strip()
if not povname:
povname = "Pat Smith"
pov "My name is [povname]!"
ここでは入力の長さを32文字に制限しています。長い名前でゲームをテストし、そのような名前がテキストレイアウトを崩さないかの確認が大切です。同時に、短すぎて望む名前を入力出来なくならないようにしなくてはいけません。