為了允許Ren’Py能夠在Python中腳本化,每個Ren’Py語句都有一條等效的Python語句。每條等效Python語句通常包含一個Python函數,也可能包含一個Python正則表達式,執行一個等效行為。
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) linksay語句的等效語句。
這個函數極少直接使用,因為下面三行語句是完全等效的。
e "Hello, world."
$ renpy.say(e, "Hello, world.")
$ e("Hello, world.")
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語句。
renpy.image(name, d) link定義一個圖像。該函數是image語句的等效Python語句。
這個函數可能僅能在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語句。
at 特性(property)。onlayer 特性(property)。若為None,使用圖像標籤(tag)關聯的默認圖層。zorder 特性(property)。若為None,zorder會保留之前的值,否則設置為0。as 特性(property)。behind 特性(property)。renpy.show_layer_at(at_list, layer='master', reset=True) linkshow layer layer at at_list 語句的等效Python語句。