为了允许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语句。