等效語句 link

為了允許Ren’Py能夠在Python中腳本化,每個Ren’Py語句都有一條等效的Python語句。每條等效Python語句通常包含一個Python函數,也可能包含一個Python正則表達式,執行一個等效行為。

對話 link

Ren’Py的say語句等效於以一個函數的形式調用角色對象。下面的兩個語句顯示了同一行兩次:

e "Hello, world."

$ e("Hello, world.")

顯示旁白也使用了同樣的辦法,用的是 narrator 角色。調用某個角色時,可以傳入關鍵字入參 interact。當 interact 為False時,Ren’Py會顯示角色對話框,並在執行某個互動操作後返回。

角色和函數對象的等效語句在其他方面也能正常運行。還可以定義一個Python函數,然後在角色對象的地方使用那個函數。例如,下面定義的函數使用一個變數,在兩個角色中選擇一個。

define lucy_normal = Character("Lucy")
define lucy_evil = Character("Evil Lucy")

init python:

    def l(what, **kwargs):
        if lucy_is_evil:
            lucy_evil(what, **kwargs)
        else:
            lucy_normal(what, **kwargs)

label start:

    $ lucy_is_evil = False

    l "大多數情況下,我都是個普通人。"

    $ lucy_is_evil = True

    l "不過有時候,瘋起來我自己都害怕!"

這種使用函數的方式,要嘛忽略未知的關鍵字入參,要嘛將那些入參傳給某個角色函數。這樣做可以在Ren’Py添加角色調用時的新關鍵字入參時,使遊戲依然能運行。

renpy.say(who, what, *args, **kwargs) link

say語句的等效語句。

who
None表示旁白,不然是發言角色對象,或表示角色名的字串。最後那種情況, func:say() 函數會創建發言角色。
what
一行發言內容的字串。字串裡帶百分號(%)的部分會被替換(substitution)。
interact
若為True,Ren’Py顯示對話並等待用戶輸入。若為False,Ren’Py顯示對話,但不執行互動行為。(互動行為會以關鍵字入參傳入相應的處理函數。)

這個函數極少直接使用,因為下面三行語句是完全等效的。

e "Hello, world."
$ renpy.say(e, "Hello, world.")
$ e("Hello, world.")

選項菜單 link

menu語句有一個等效的Python函數。

這個函數向用戶顯示一個菜單。 item 應該是一個二元元組列表。在每個元組中,第一個元素是一個文本標籤(label),第二個參數是該元素被選中時的返回值。如果返回值是None,第一個元素會用作整個菜單的標題。

該函數使用多個入參,這份文件中只列出了其中一部分。除了 items 之外,所有都是關鍵字入參。

interact
若為False,顯示菜單,但不執行任何互動行為。
screen
顯示菜單的界面名。
renpy.display_menu(items, interact=True, screen="choice") link

這個函數向用戶顯示一個菜單。 item 應該是一個二元元組列表。在每個元組中,第一個元素是一個文本標籤(label),第二個參數是該元素被選中時的返回值。如果返回值是None,第一個元素會用作整個菜單的標題。

該函數使用多個入參,這份文件中只列出了其中一部分。除了 items 之外,所有都是關鍵字入參。

interact
若為False,顯示菜單,但不執行任何互動行為。
screen
顯示菜單的界面名。

顯示圖像 link

image、scene、show和hide語句都一個等效的Python函數。

renpy.get_at_list(name, layer=None) link

將圖層 layer 上圖像標籤名為 tag 的圖像所應用的變換(transform),以列表形式返回。如果沒有使用任何變換(transform)則返回一個空列表,如果圖像不顯示則返回None。

如果 layer 為None,就是用給定圖像標籤(tag)所在的默認圖層。

renpy.hide(name, layer=None) link

從某個圖層中隱藏某個圖像。hide語句的等效Python語句。

name
需要隱藏的圖像名稱。只是用圖像標籤(tag),所有帶相同標籤的圖像都將被隱藏(圖像全名不重要)。
layer
該函數操作的圖層名。若為None,使用圖像標籤(tag)關聯的默認圖層。
renpy.image(name, d) link

定義一個圖像。該函數是image語句的等效Python語句。

name
需要顯示的圖像名稱,是一個字串。
d
與圖像名關聯的可視組件。

這個函數可能僅能在init語句塊(block)中運行。遊戲開始後運行這個函數會觸發一個報錯。

renpy.scene(layer='master') link

從圖層 layer 移動所有可視組件。當scene語句沒有指定一個需要顯示的圖像時,這是scene語句的等效Python語句。

一個完整的scene語句等效於調用renpy.scene之後再調用 renpy.show() 。舉例:

scene bg beach

等效於:

$ renpy.scene()
$ renpy.show("bg beach")
renpy.show(name, at_list=, []layer='master', what=None, zorder=0, tag=None, behind=[]) link

在某個圖層上顯示某個圖像。這是show語句的等效Python語句。

name
需要顯示的圖像名稱,是一個字串。
at_list
應用於圖像的變換(transform)列表。等效於 at 特性(property)。
layer
一個字串,表示圖像顯示使用的圖層名。等效於 onlayer 特性(property)。若為None,使用圖像標籤(tag)關聯的默認圖層。
what
若非None,這是一個代替圖像的可視組件。(等效於show表達式語句。)當給定了一個 what 參數時, name 可以用於將圖像與標籤(tag)關聯。
zorder
一個整數,等效於 zorder 特性(property)。若為None,zorder會保留之前的值,否則設置為0。
tag
一個字串,用於指定顯示圖像的標籤(tag)。等效於 as 特性(property)。
behind
一個字串列表,表示需要顯示的圖像在哪些圖像標籤(tag)後面。等效於 behind 特性(property)。
renpy.show_layer_at(at_list, layer='master', reset=True) link

show layer layer at at_list 語句的等效Python語句。

reset
若為True,當圖層顯示時,變換(transform)狀態會重設為開始狀態。若為False,變換狀態會保持,允許新的變換更新狀態。

轉場 link

with語句的等效是renpy.with_statement函數。

renpy.with_statement(trans, always=False) link

觸發一個轉場(transition)。這是with語句的Python等效語句。

trans
轉場(transition)名。
always
若為True,在用戶禁用轉場的情況下依然顯示轉場效果。

當用戶中斷轉場時該函數返回True,其他情況返回False。

跳轉 link

jump語句的Python等效是renpy.jump函數。

renpy.jump(label) link

結束當前語句,並讓主控流程跳轉到給定的腳本標籤(label)。

Call link

call語句的Python等效是renpy.call函數。

renpy.call(label, *args, **kwargs) link

結束當前Ren’Py語句,並跳轉到 label 處。當jump返回後,主控流程會返回到之前的語句。

from_current
若為True,主控流程會返回到當前語句,而不是當前語句的下一句。(這會導致當前語句運行兩次。這項必須作為關鍵字入參傳入。)
renpy.return_statement() link

觸發Ren’Py從當前Ren’Py級別的調用返回。