特別な名前のスクリーン
Ren'Py には2種類の特別な名前のスクリーンがあります。1つ目は Ren'Py のスクリプト言語のコマンド ( またはプログラム的に等価なもの ) が実行されると自動的に表示されるスクリーンです。もう一つは menu スクリーンで、これらは一般的な機能に対応する一般的な名前を持ちますが、必要に応じて、スクリーンを省略したり変更したり出来ます。
このページではスクリーンの例を示します。いくつかのスクリーンには必要最低限の機能を持たせなければならない一方で、スクリーンシステムは追加の機能をスクリーンに加えられると理解することが重要です。例えば、基本的な say スクリーンはテキストを表示するだけですが、スクリーンシステムは簡単にスキップや自動進行、ミュートのような機能を追加出来るようにします。
いくつかの特別なスクリーンは引数を取ります。これらの引数はそのスクリーンのスコープで変数としてアクセス可能です。
スクリーンのいくつかはそれらに関連づけられた特別な ID も持っています。特別な ID は特定の種類の displayable に代入されるはずです。それによりプロパティーがその displayable に代入されたり、その displayable をそのスクリーンを表示する Ren'Py の部分にアクセスできるようにしたりします。
ゲーム内のスクリーン
これらのスクリーンは特定の Ren'Py ステートメントを実行すると自動的に表示されます。
Say
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
choice
スクリーンは menu ステートメントによって作成されるゲーム内選択肢を表示するために使用され、以下の引数を取ります。 :
- items
これはメニューに入力するオブジェクトのリストで、選択画面の各選択肢を表します。各オブジェクトは以下のフィールドをもちます。 :
-
caption
選択肢の見出しとなる文字列です。
-
action
その選択肢が選択されると実行されるアクションです。これが menu のキャプションで config.narrator_menu
が Falseなら None です。
-
chosen
そのゲームのプレイ中に少なくとも一度選択された選択肢ならば True です。
-
args
これは menu choice へ渡される引数を含むタプルです。
-
kwargs
menu choice へ渡されるキーワード引数を含む辞書です。
加えて 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"
NVL
nvl
スクリーンは NVL モード で使用され、以下の引数を取ります。 :
- dialogue
NVL スクリーンで入力するオブジェクトのリストで、表示される台詞の一行一行にそれぞれ対応します。各要素は以下のフィールドを持ちます :
-
current
これが台詞の現在の行なら True です。台詞の現在の行には "what" の id を持つ表示されるテキストがなければなりません。
-
who
話しているキャラクターの名前かそのような名前がなければ None です。
-
what
話されるテキストです.
-
who_id, what_id, window_id
入力に対する話者、台詞、ウィンドウに対する優先される id です。
-
who_args, what_args, window_args
話者、台詞、ウィンドウに関するプロパティーです。その id が上述のように設定されていれば、これらに自動的に適用されますが、独立的にも利用可能です。
-
multiple
複数キャラクターダイアログ なら、これは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
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
存在すれば、スキップ処理中に skip_indicator
スクリーンが表示され、スキップ停止で非表示されます。引数は取りません。
とても単純なスキップインディケーターです。
screen skip_indicator():
zorder 100
text _("Skipping")
CTC (Click-To-Continue)
存在すれば、台詞の表示が完了すると 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
text _("Click to Continue"):
size 12
xalign 0.98
yalign 0.98