2024年3月5日時点Ren'Py ver.8.6.0の初心者の覚書。
変なところやもっと効率的な部分があったら教えてください。
この記事で確認できる実装内容は以下です。
- nvlモードでダイアログと入力画面を同時に表示する
- nvlモードでダイアログと選択肢を同時に表示する
通常nvlモードでinputスクリーンやchoiceスクリーンを表示するとダイアログ部分が非表示になります。
ダイアログと入力画面を同時に表示する
参考URL:renpy.input boxed in center of the screen?
完成図.rpy
screen input(prompt):
modal True #入力を完了しない限りダイアログを進行しない
zorder 1 #ダイアログより前にスクリーンを表示する
frame:
style "input_frame"
vbox:
xalign 0.5
yalign 0.5
text prompt
null height 10
input id "input"
inputスクリーンに以下の記述を追加します。
screen input(prompt):
+ modal True #入力を完了しない限りダイアログを進行しない
+ zorder 1 #ダイアログより前にスクリーンを表示する
frame:
style "input_frame"
vbox:
xalign 0.5
yalign 0.5
text prompt
null height 10
input id "input"
inputスクリーンを呼び出す時
tete "あなたは誰ですか"
+ renpy.call_screen("input",prompt="回答を入力してください")
+ #renpy.input()ではなくcall_scren()で呼び出す
ダイアログと選択肢を同時に表示する
完成図.rpy
screen nvl(dialogue, items=None):
window:
style "nvl_window"
frame:
style "input_frame"
#menuで選択肢を呼び出したときに選択肢画面が表示される
if items:
frame:
vbox:
id "menu"
for caption, action, chosen in items:
if action:
button:
style "nvl_menu_choice_button"
action action
text caption style "nvl_menu_choice"
else:
text caption style "nvl_dialogue"
nvlスクリーンに以下の記述を追加します。
screen nvl(dialogue, items=None):
window:
style "nvl_window"
frame:
style "input_frame"
#menuで選択肢を呼び出したときに選択肢画面が表示される
+ if items:
+ frame:
+ vbox:
+ id "menu"
+ for caption, action, chosen in items:
+ if action:
+ button:
+ style "nvl_menu_choice_button"
+ action action
* text caption style "nvl_menu_choice"
+ else:
+ text caption style "nvl_dialogue"
nvlモードを開始するときに以下の設定を追加します。
init python:
+ menu = nvl_menu
あとはいつも通りmenu形式で書けば呼び出せます。
menu:
doc "もう一回遊ぶ?"
"Yes":
jump start
"No":
pass