特別な名前のスクリーン link
Ren'Py には2種類の特別な名前のスクリーンがあります。1つ目は Ren'Py のスクリプト言語のコマンド ( またはプログラム的に相当するもの ) が実行されると自動的に表示されるスクリーンです。もう一つは menu スクリーンで、これらは一般的な機能に対応する一般的な名前を持ちますが、必要に応じて、スクリーンを省略したり変更したり出来ます。
このページではスクリーンの例を示します。いくつかのスクリーンには必要最低限の機能を持たせなければならない一方で、スクリーンシステムは追加の機能をスクリーンに加えられると理解することが重要です。例えば、基本的な say スクリーンはテキストを表示するだけですが、スクリーンシステムは簡単にスキップや自動進行、ミュートのような機能を追加出来るようにします。
いくつかの特別なスクリーンはパラメーターを受け取ります。これらのパラメーターはそのスクリーンのスコープで変数としてアクセス可能です。
スクリーンのいくつかはそれらに関連づけられた特別な ID も持っています。特別な ID は特定の種類の displayable に代入されるはずです。それによりプロパティーがその displayable に代入されたり、その displayable をそのスクリーンを表示する Ren'Py の部分にアクセスできるようにしたりします。
ゲーム内のスクリーン link
これらのスクリーンは特定の Ren'Py ステートメントを実行すると自動的に表示されます。
Say link
ADV モードの台詞を表示するときに say
スクリーンは say ステートメントによって以下のパラメーターを伴って呼び出されます。 :
- who
話しているキャラクターの名前
- what
話し手による台詞
以下の ID を伴う displayable の宣言が期待されます。 :
- "who"
テキスト displayable で、話し手の名前を表示します。 character オブジェクトにはこの displayable の体裁を整える引数を与えられます。
- "what"
テキスト displayable で、話し手に話されている台詞を表示します。 character オブジェクトにはこの displayable の体裁を整える引数を与えられます。Ren'Py が自動進行の時間やクリック待ちマーク等を計算するために使用するので、 この ID を持つ displayable は定義される必要があります
- "window"
ウィンドウまたはフレームです。これは慣例として、 who と what のテキストを含みます。 character オブジェクトにはこの displayable の体裁を整える引数を与えられます。
screen say(who, what):
window id "window":
has vbox
if who:
text who id "who"
text what id "what"
Choice link
choice
スクリーンは menu ステートメントによって作成されるゲーム内選択肢を表示するために使用され、以下のパラメーターを受け取ります。 :
- items
これはメニューに入力するオブジェクトのリストで、選択画面の各選択肢を表します。各オブジェクトは以下のフィールドをもちます。 :
選択肢の見出しとなる文字列です。
- action link
その選択肢が選択されると実行されるアクションです。このオブジェクトが menu のキャプションであり、かつ
config.narrator_menu
が False ならこれは None です。
- chosen link
そのゲームのプレイ中に少なくとも一度選択された選択肢ならば True です。
- args link
これは menu choice へ渡される引数を含むタプルです。
- kwargs link
menu choice へ渡されるキーワード引数を含む辞書です。
これらの要素と内部のアクションは menu ステートメント終了で無効になります。
加えて menu ステートメントへ渡される引数はスクリーンへの呼び出し中に渡されます。
screen choice(items):
window:
style "menu_window"
vbox:
style "menu"
for i in items:
if i.action:
button:
action i.action
style "menu_choice_button"
text i.caption style "menu_choice"
else:
text i.caption style "menu_caption"
Input link
input
スクリーンは renpy.input()
を表示するために使用され、パラメーターを一つ受け取ります。 :
- prompt
renpy.input に提供されるプロンプトテキストです。
以下の ID を伴う displayable の宣言が期待されます。 :
- "input"
input displayable で、存在する必要があります。これには renpy.input に提供されるすべてのパラメーターが与えられるので存在する必要があります。
screen input(prompt):
window:
has vbox
text prompt
input id "input"
NVL link
nvl
スクリーンは NVL モード で使用され、以下のパラメーターを受け取ります。 :
- dialogue
NVL スクリーンで入力するオブジェクトのリストで、表示される台詞の一行一行にそれぞれ対応します。各要素は以下のフィールドを持ちます :
- current link
これが台詞の現在の行なら True です。台詞の現在の行には "what" の id を持つ表示されるテキストがなければなりません。
- who link
話しているキャラクターの名前かそのような名前がなければ None です。
- what link
話されるテキストです.
- who_id, what_id, window_id
入力に対する話者、台詞、ウィンドウに対する優先される id です。
- who_args, what_args, window_args
話者、台詞、ウィンドウに関するプロパティーです。その id が上述のように設定されていれば、これらに自動的に適用されますが、独立的にも利用可能です。
- multiple link
複数キャラクターダイアログ なら、これは2つの要素のタプルとなります。1つ目は台詞ブロック番号に基づくもので、2つ目は複数ステートメント合計の台詞ブロック数です。
- items
これは choice screen に渡されるものと同じ item のリストです。これが空なら、選択肢は表示されません。
items が存在しないと、 NVL スクリーンは "what" id のテキストウィジェットを常に渡すでしょう。Ren'Py はそれを使用してオートモードの時間や click-to-continue, その他を計算します(デフォルトの what_id が使用されていれば、これは十分自動的です)。
Ren'Py は nvl
と同じパラメーターを受け取る nvl_choice
スクリーンもサポートしており、もし存在するとゲーム内選択肢がユーザーに表示されるときは nvl
に優先して使用されます。
screen nvl(dialogue, items=None):
window:
style "nvl_window"
has vbox:
style "nvl_vbox"
# Display dialogue.
for d in dialogue:
window:
id d.window_id
has hbox:
spacing 10
if d.who is not None:
text d.who id d.who_id
text d.what id d.what_id
# Display a menu, if given.
if items:
vbox:
id "menu"
for i in items:
if action:
button:
style "nvl_menu_choice_button"
action i.action
text i.caption style "nvl_menu_choice"
else:
text i.caption style "nvl_dialogue"
Notify link
notify
スクリーンは renpy.notify()
によってユーザーに通知する displayable を表示するために使用されます。通常は通知のタスクのすべてを処理するために transform と連携して使用されます。パラメーターを一つ与えられます。
- message
表示されるメッセージ
デフォルトの notify スクリーンとその関連づけられた transform :
screen notify(message):
zorder 100
text message at _notify_transform
# This controls how long it takes between when the screen is
# first shown, and when it begins hiding.
timer 3.25 action Hide('notify')
transform _notify_transform:
# These control the position.
xalign .02 yalign .015
# These control the actions on show and hide.
on show:
alpha 0
linear .25 alpha 1.0
on hide:
linear .5 alpha 0.0
Skip Indicator link
存在すれば、スキップ処理中に skip_indicator
スクリーンが表示され、スキップ停止で非表示されます。引数は受け取りません。
とても単純なスキップインディケーターです。
screen skip_indicator():
zorder 100
text _("Skipping")
CTC (Click-To-Continue) link
存在すれば、台詞の表示が完了すると ctc
スクリーンが表示され、プレイヤーにクリックして次のテキストを表示するよう促します。一つのパラメーターまたは複数のキーワード引数が指定されるでしょう。
- arg
ctc displayable は
Character()
により選択されます。これは Character への ctc, ctc_pause, ctc_timepause 引数のいずれかから適切なものが選ばれます。 CTC が Character に指定されなければこの引数は全く渡されません。
加えて screen が要求したときのみ渡されるパラメーターがあります。
- ctc_kind
表示する CTC の種類です。 "last" ( 行端の CTC ) または "pause", "timedpause" の1つです。
- ctc_last
Character()
への ctc 引数です。- ctc_pause
Character()
への ctc_pause 引数です。- ctc_timedpause
Character()
ctc_timedpause 引数です。
とても単純な ctc スクリーンです。
screen ctc(arg=None):
zorder 100
hbox:
xalign 0.98
yalign 0.98
add arg
text _("Click to Continue"):
size 12