等效语句
# 等效语句
在 Ren'Py 官方文档是这样介绍等效语句的:
为了允许 Ren’Py 能够在 Python 中脚本化,每个 Ren’Py 语句都有一条等效的 Python 语句。每条等效 Python 语句通常包含一个 Python 函数,也可能包含一个 Python 正则表达式,执行一个等效行为。
本章我们将为您介绍一些简单并常用的等效语句。
# say
在 Ren'Py 脚本中,如果想要让角色说话,可以使用这串代码:
<角色名> "<说话内容>"
而在 Python 环境中,renpy.say
就是上面的语句的等效语句。格式如下:
python:
renpy.say(<谁>, "<内容>")
角色 | 在等效语句中相应的(变量)名称 |
---|---|
Monika | m |
Yuri | y |
Natsuki | n |
Sayori | s |
玩家/MC | mc |
旁白 | None |
可以看到,在调用 renpy.say
时使用的角色代称与在使用等效的 Ren'Py 语句时使用的角色代称是类似的,只不过旁白角色对应的值是 None。
但是这个方法很少使用,因为以下五段代码的效果都是相同的:
y "啊哈哈。"
python:
renpy.say(y, "啊哈哈。")
python:
y("啊哈哈。")
$ renpy.say(y, "啊哈哈。")
$ y("啊哈哈。")
# menu
在 Ren'Py 脚本中,想要显示出一个选择菜单,只需要执行:
menu:
"<对话框中显示的内容>"
"选项 A":
# 选项执行的代码
"选项 B":
# 选项执行的代码
...
而如果想要使用 Python 调用选择菜单,只需要在脚本中插入类似于下面的代码块:
python:
menu_result = renpy.display_menu([("选项A", "<选择后返回的结果>"), ("选项B", "<选择后返回的结果>")], screen="choice")
if menu_result == <布尔值,整数值、字符串...>:
# 执行的代码
elif menu_result == <布尔值,整数值、字符串...>:
# 执行的代码
# 当然,可以不添加上面的 if 语句,直接忽略返回值。
# hide
、show
、scene
和 image
hide
、show
、scene
和 image
都有对应的等效语句。
hide
:
python:
renpy.hide("<图像名称>")
show
:
python:
renpy.show("<需显示图像名称>", at_list=<变换列表>, layer="显示图层名", what=None, zorder=<整数数字>, tag="图像标签", behide=["<标签一>", "<标签二>"])
看起来很复杂,是不是?但对于没有特殊需求的人来说,只需要使用这样的一串代码:
python:
renpy.show("<需显示图像名称>", layer="显示图层名", zorder=<整数数字>, tag="图像标签")
扩展知识:
Ren'Py 官方文档已经介绍过了 renpy.show
可以接受的所有参数:
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)。
这里不过多讲解。
scene
:
python:
renpy.scene()
# 此处应调用 renpy.show
请注意:
Ren'Py 中一个完整的 scene 语句在使用等效语句时,应再在后面调用 renpy.show
。
如下:
Ren'Py 语句:
scene bg club_day
等效语句:
python:
renpy.scene()
renpy.show("bg club_day")
# call
和 jump
提示:
在使用 call
和 jump
的等效语句时,你可以直接运算 label 名,而不必使用 expression
。
# call
call
的等效语句如下:
renpy.call(<label 名,字符串>)
# jump
jump
的等效语句如下:
renpy.jump(<label 名,字符串>)