特殊界面名稱 link
在Ren’Py中總共有兩類特殊界面名稱。第一類是在Ren’Py腳本語言命令(或者等效的程序)運行時自動顯示的部分。另一類是菜單界面。這些界面沿襲管用名稱,實現慣用功能,但界面名可以省略或者修改為不需要實際寫出來。
在本頁內容中,我們會給出一些界面樣例。需要意識到的重點是,一些界面必須包含精簡的功能,界面系統允許在界面上添加額外的功能。例如,標準的say界面只能顯示文本,使用界面系統就很容易添加跳過(skipping)、自動前進(auto-forwar)模式及靜音(muting)。
一些特殊界面會使用參數。這些參數可以在界面的作用域(scope)中,以變數的形式訪問。
一些界面也還有關聯的專屬id。專屬id會被分配給指定類型的可視組件。其還可以導致特性(property)分配給對應的可視組件,並可以讓Ren’Py顯示界面的其他部分可以訪問這個可視組件。
遊戲內界面 link
當某個Ren’Py語句執行時,這些界面會自動顯示。
Say link
say
界面在ADV模式對話時,透過say語句被調用。其顯示時使用下列參數:
- who
發言角色名的文本。
- what
發言角色說的內容。
需要使用下列id聲明可視組件:
- “who”
一個文本組件,顯示發言角色名。character對象可以使用入參提供組件樣式。
- “what”
一個文本組件,顯示發言角色說的內容。character對象可以使用入參提供組件樣式。 帶有該id的可視組件必須被定義 ,因為Ren’Py會使用它繼續按自動前進模式的時間,點擊繼續等。
- “window”
一個窗口或者框架。按照習慣其包含who和what文本。character對象可以使用入參提供組件樣式。
screen say(who, what):
window id "window":
has vbox
if who:
text who id "who"
text what id "what"
Choice link
choice
界面使用menu語句顯示遊戲內選項。其會使用下列參數:
- items
這是一個菜單入口對象列表,表示菜單中的各個選項。每個菜單入口對象包含以下的欄位(field):
菜單選項標題字串。
- action link
當菜單選項被選擇時執行的行為。如果這是菜單行為(action)的話,可以為None,且
config.narrator_menu
的值為False。
- chosen link
整個遊戲流程中該選項至少被選擇過一次,則為True。
- args link
一個元組,包含所以傳入菜單選項的固定位置入參。
- kwargs link
一個字典,包含所有傳入菜單選項的關鍵字參數。
以上內容和行為,都會在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定義一個可視組件:
- “input”
一個必須存在的輸入組件。其所有參數都會應用於renpy.input,所以必須存在。
screen input(prompt):
window:
has vbox
text prompt
input id "input"
NVL link
nvl
界面用於顯示NVL模式的對話。其使用下列參數:
- dialogue
NVL層(entry)對象列表。每一個對象對應一行顯示的對話。每一層(entry)都有如下的欄位(field):
- current link
若是對話的當前行則返回True。對話當前行必須必須使用名為“what”的id來顯示文本。
- who link
發言角色名字,如果沒有對應的角色則為None。
- what link
發言內容文本。
- who_id, what_id, window_id
分別對應相關的層(entry)上發言者、對話和窗口的id。
- who_args, what_args, window_args
發言者、對話和窗口相關的特性(property)。這些欄位(field)會自動被應用,前提是上述的id被正確配置。但也可以分開配置使這些欄位(field)可用。
- items
這是所有會用在 選擇界面 中的item列表。如果列表是空的,則菜單就不會顯示。
如果 items 不存在,NVL界面通常會給出id為“what”的文本部件(widget)。Ren’Py使用這個文本不見計算自動前進模式時間、點擊繼續等。(如果使用默認what_id的話,就能啟用自動模式。)
Ren’Py 也支持 nvl_choice
界面,這個界面與 nvl
界面使用相同的參數,而且當向用戶展示遊戲內選項時會使用這些參數作為顯示環境設定。
screen nvl(dialogue, items=None):
window:
style "nvl_window"
has vbox:
style "nvl_vbox"
# 顯示對話。
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
# 如果存在菜單就顯示。
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()
函數用於向用戶顯示通知消息。其主要用於連接某個transform,以處理整個通知任務。它僅使用一個參數:
- message
顯示的資訊。
預設的notify界面和關聯的transform如下:
screen notify(message):
zorder 100
text message at _notify_transform
# 這控制界面第一次顯示和隱藏之間的時間。
timer 3.25 action Hide('notify')
transform _notify_transform:
# 這些控制位置
xalign .02 yalign .015
# 這些控制顯示隱藏的行為。
on show:
alpha 0
linear .25 alpha 1.0
on hide:
linear .5 alpha 0.0
跳過提示 link
skip_indicator
界面在“跳過”過程中出現,完成“跳過”後隱藏。其不使用任何參數。
這是一個非常簡單的跳過提示界面:
screen skip_indicator():
zorder 100
text _("Skipping")
CTC(點擊繼續) link
ctc
界面會在對話顯示完畢,提示用戶點擊顯示更多文本的情況下出現。其可能會使用一個參數。
- arg
如果
Character()
對象有一個 ctc 入參,就會被作為第一個固定位置入參傳入ctc界面。
這是一個非常簡單的ctc界面:
screen ctc(arg=None):
zorder 100
text _("Click to Continue"):
size 12
xalign 0.98
yalign 0.98
add arg
text _("點擊繼續"):
size 12