界面行为(action)、值(value)和函数 link

Ren’Py带来了一大堆行为、值和函数,与界面和界面语言协同作用。

行为(action) link

当某个按钮(包括图片按钮、文本按钮和hotspot按钮)被激活、被鼠标悬停或失去鼠标悬停状态时,某个行为(action)就会被唤起。当某个按钮被选中或者非启用时,行为(action)就可能已经决定了。

与这些行为一样,某个行为可以是一个不带任何入参的函数。当行为被唤起时,对应的函数就会调用。如果那个行为返回某个值,返回的值就会传到来源交互动作。

需要使用行为的地方也可能出现的是一个行为的列表,列表内的行为会顺序执行。 只有列表中的行为都是sensitive状态时,列表自身才是sensitive状态。selected状态同理。 除非列表中某些行为使用了 SensitiveIf()SelectedIf() 来决定自身状态。

控制行为 link

这些行为用于管理界面,交互结果和流程控制。

Call(label, *args, **kwargs) link

结束当前语句,并调用某个脚本标签(label)。入参和关键词参数会传给 renpy.call()

Hide(screen=None, transition=None, _layer=None) link

如果名为 screen 的界面已经显示,则隐藏这个界面。

screen

若为字符串,表示待隐藏界面的名称。若为None,表示待隐藏界面为当前界面。

transition

如果非None,隐藏界面时使用转场(transition)。

_layer

该项将作为layer参数传入 renpy.hide_screen()。若该项为None则忽略。

Jump(label) link

触发主控流程转到脚本标签 label 处。

NullAction(*args, **kwargs) link

不做任何事。

可以用作某个按钮的“鼠标悬停/鼠标离开”事件响应,不执行任何行为。

Return(value=None) link

使用提供的值返回给当前的互动行为,提供的值不可以为None。常用于菜单和imagemap,用来选择交互行为的返回值。如果使用的是 call screen 语句调用界面,返回值就会放置在 _return 变量中。

如果出现在某个菜单中,值会返回给来源菜单。(这种情况下就需要返回None。)

Show(screen, transition=None, *args, **kwargs) link

触发另一个界面的显示。 screen 是给定待显示的界面名。入参会传给正在显示的界面。

如果 transition 非空,则会用作新界面显示时的转场效果。

该行为可以使用 _layer_zorder_tag 关键词入参。各参数的意义与 renpy.show_screen() 函数相同。

ShowTransient(screen, transition=None, *args, **kwargs) link

显示一个临时界面。临时界面会在当前交互完成后隐藏。入参会传给当前显示的界面。

如果 transition* 非空,则会用作新界面显示时的转场效果。

该行为可以使用 _layer_zorder_tag 关键词入参。各参数的意义与 renpy.show_screen() 函数相同。

ToggleScreen(screen, transition=None, *args, **kwargs) link

切换界面的可视性。如果某个界面当前没有显示,则会使用提供的入参显示那个界面。相反,则隐藏那个界面。

如果 transition 非空,则会用作新界面显示时的转场效果。

该行为可以使用 _layer_zorder_tag 关键词入参。各参数的意义与 renpy.show_screen() 函数相同。

数据行为 link

下表中列出了一些常用数据行为(Data Action),根据数据类型、作用域等特征做了分类:

管理器

访问器

Variable

ScreenVariable

LocalVariable

Field

Dict

Set

SetVariable()

SetScreenVariable()

SetLocalVariable()

SetField()

SetDict()

Toggle

ToggleVariable()

ToggleScreenVariable()

ToggleLocalVariable()

ToggleField()

ToggleDict()

Cycle

CycleVariable()

CycleScreenVariable()

CycleLocalVariable()

CycleField()

CycleDict()

Increment

IncrementVariable()

IncrementScreenVariable()

IncrementLocalVariable()

IncrementField()

IncrementDict()

访问器决定“谁”的数值发生变化,管理器决定新值的结果。具体关系如下:

  • -Variable 类行为,会在通用存储空间中寻找 name 同名的全局变量, 并修改该变量的值。name 参数必须是一个字符串。其可以是一个简单的变量名,比如“strength”。也可以是使用英文符号“.”的某些变量的字段, 比如“hero.strength”或“persistent.show_cutscenes”。

  • -ScreenVariable 类行为, 会在当前最上层(通常是获得焦点的)界面中寻找 name 同名的变量,并修改该变量的值。 如果该变量所在界面被多个界面使用 use 引用,则修改之后会同时在各界面产生效果。

  • -LocalVariable (SetLocalVariable, ToggleLocalVariable, CycleLocalVariable, IncrementLocalVariable)`类行为, 会在使用该行为的界面内寻找 `name 同名的本地变量,并修改该变量的值。仅在某个界面且被其他界面使用 use 引用时(详见 use),才适合使用该行为。 其他更多情况时,更推荐使用 -ScreenVariable 类行为。后者还有更好的性能表现和更多的界面缓存信息。 -LocalVariable 类行为仅能创建在变量所属的上下文中,且不能赋值到其他地方。

  • -Field 类行为, 能修改 object 对象中名为 field 的字段。

  • -Dict 类行为, 可以修改字典 dict 中的键 key 对应的值 dict[key]。该类行为也可以修改类表。

  • Set- 类行为, 直接把目标值改为 value 入参的值。注意,set 项没有任何操作,其是Python内建类型。总结起来,target = value

  • Toggle- 类行为, 可以切换目标的布尔值。可切换范围为 true_value (需要指定,未指定则为None)和 false_value (同上)。 如果 true_valuefalse_value 都是None,则执行 target = not target

  • Cycle- 类行为, 会循环获取 values 中的元素。values 必须是一个非空序列(列表、元组或数值范围)。 如果行为运行时,目标的值没有匹配到序列中的任何元素,则将目标的值设置为序列中的第一个元素。 loop 参数(默认为True)决定 values 越界的处理方式:若为True则会从头开始,若为False则抛出异常。 reverse 参数(默认为False)会翻转序列元素顺序。

  • Increment- 类行为, 会将目标数值增加一个 amount 的量。amount 默认值为1,且可以任何与目标兼容的数据类型。target = target + amount

CycleDict(dict, key, values, *, reverse=False, loop=True) link

参见 数据行为

CycleField(object, field, values, *, reverse=False, loop=True) link

参见 数据行为

CycleLocalVariable(name, values, *, reverse=False, loop=True) link

参见 数据行为

CycleScreenVariable(name, values, *, reverse=False, loop=True) link

参见 数据行为

CycleVariable(name, values, *, reverse=False, loop=True) link

参见 数据行为

IncrementDict(dict, key, amount=1) link

参见 数据行为

IncrementField(object, field, amount=1) link

参见 数据行为

IncrementLocalVariable(name, amount=1) link

参见 数据行为

IncrementScreenVariable(name, amount=1) link

参见 数据行为

IncrementVariable(name, amount=1) link

参见 数据行为

SetDict(dict, key, value) link

参见 数据行为

SetField(object, field, value) link

参见 数据行为

SetLocalVariable(name, value) link

参见 数据行为

SetScreenVariable(name, value) link

参见 数据行为

SetVariable(name, value) link

参见 数据行为

ToggleDict(dict, key, true_value=None, false_value=None) link

参见 数据行为

ToggleField(object, field, true_value=None, false_value=None) link

参见 数据行为

ToggleLocalVariable(name, true_value=None, false_value=None) link

参见 数据行为

ToggleScreenVariable(name, true_value=None, false_value=None) link

参见 数据行为

ToggleVariable(name, true_value=None, false_value=None) link

参见 数据行为

下列行为不符合上表的规则。其中一些会用到Python的 set 类型数据,但又与上面的 Set- 类行为不一样。

这些行为设置或者切换数据。

AddToSet(set, value) link

value 添加到 set 中。

set

待添加元素的集合。其可以是一个Python的集合或者列表数据列表。如果是列表的话,新增的值会追加到列表结尾。

value

待添加或追加的值。

RemoveFromSet(set, value) link

valueset 中移除。

set

待移除元素的集合,可以是一个集(set)或者列表(list)型数据。

value

待移除的元素。

ToggleSetMembership(set, value) link

切换集 setvalue 的成员。如果对应的值在集里不存在,会添加那个值到集合中。否则,就会移动那个值。

带有这个行为的按钮会被标记为被选中(selected)状态,仅当那个值存在于集 set 中。

set

待添加或移除成员的集合。其可以是一个集(set)或列表(list)。如果是列表,就会在列表中结尾添加新元素。

value

需要添加的值。

文件行为 link

这些行为会处理文件的保存、读取和删除。其中很多都是用 namepage 入参。

name

待保存内容的文件名。其可以是一个字符串或者一个整数。与 page 拼接用于待创建文件的名称。

page

行为实际执行的页面(page)。其值是“auto”、“quick”或者一个正整数。若为None,page的值会根据持久化页面编号自动确定。

如果设置了 config.file_slotname_callback,则会使用该配置项作为存档槽位名称。

FileAction(name, page=None, **kwargs) link

对存档文件“进行正确操作”。这意味着在load界面显示时进行存档文件读取操作,相反在save界面显示时进行存档文件保存操作。

name

存档或读档时,槽位的名称。如果为None,一个未被使用的槽位(基于当前时间的巨大数字)就会被使用。

page

存档或读档时使用的页面编号(page)。若为None,就使用当前页面。

其他关键词入参会传给FileLoad或者FileSave。

FileDelete(name, confirm=True, page=None, slot=False) link

删除存档文件。

name

要删除的存档槽名称。

confirm

若为True,删除存档文件前提示用户确认。

page

存档或读档时使用的页面编号(page)。若为None,就使用当前页面。

slot

若为True,直接使用 name 作为存档槽位名,忽略 page

FileLoad(name, confirm=True, page=None, newest=True, cycle=False, slot=False) link

读取存档文件。

name

读取的槽位名称。若为None,an unused slot the file will not be loadable。

confirm

如果为True且当前不在主菜单,在读取存档文件前提是用户确认。

page

存档文件读取的页面编号。如果为None,就是用当前页面。

newest

如果为True,按钮会被选中,前提是其为最新的存档文件。

cycle

忽略。

slot

若为True,直接使用 name 作为存档槽位名,忽略 page

FilePage(page) link

将存档文件页面设置为 page ,其可以是“auto”、“quick”或一个整数。

FilePageNext(max=None, wrap=False) link

前往下一个存档文件页面(page)。

max

若该值存在,应该是整数,给定了我们前往的存档文件最大页面编号。

wrap

若为True,我们可以从存档文件最后的页面前往第一页面,前提是设置了页面最大编号。

auto

若此参数和 warp 都为True,将会把玩家带往自动存档页。

quick

若此参数和 warp 都为True,将会把玩家带往快速存档页。

FilePagePrevious(max=None, wrap=False, auto=True, quick=True) link

前往上一个存档文件页面,前提是上一个页面存在的话。

max

若该值存在,应该是整数,给定了我们前往的存档文件最大页面编号。需要启用wrap。

wrap

若为True,我们可以从存档文件第一页面前往最后的页面,前提是设置了页面最大编号。

auto

若此参数和 warp 都为True,将会把玩家带往自动存档页。

quick

若此参数和 warp 都为True,将会把玩家带往快速存档页。

FileSave(name, confirm=True, newest=True, page=None, cycle=False, slot=False, action=None) link

保存存档文件。

如果某个存档被标记为最新存档,那该存档对应的按钮将处于选中状态。

name

待存档的槽位名。如果为None,一个未被使用的槽位(基于当前时间的巨大数字)就会被使用。

confirm

若为True,覆盖存档文件前提示用户确认。

newest

忽略。

page

槽位所在页面名称。若为None,使用当前页面。

cycle

如果为True,在提供的页面上存档会循环使用而并不会显示给用户看。config.quicksave_slots 配置了循环使用的槽位。

slot

若为True,使用 name 参数,而忽略 page 参数。

action

存档成功完成后执行的一个行为。

FileTakeScreenshot() link

当游戏存档时,截取屏幕快照并使用。通常使用存档界面显示之前的界面截图,用作存档的快照。

QuickLoad(confirm=True) link

快速读档。

confirm

若为True,且目前不在主菜单界面,读档前提是用户确认。

QuickSave(message='Quick save complete.', newest=False) link

快速存档。

message

当快速存档完成时向用户显示的一条信息。

newest

设置为True用于标记快速存档为最新的存档。

同步行为 link

DownloadSync() link

该行为会从Ren’Py同步服务器端下载数据并同步。

UploadSync() link

该行为会将最后存档文件上传到Ren’Py同步服务器端。

音频行为 link

关于音频通道(channel)的概念和工作机制,大多数信息都可以在 音频 中找到解释。

GetMixer(mixer, db=False) link

返回 mixer 的音量值。

db

若为True,返回的音量值单位为分辨。 若为默认值False,音量值介于0.0与1.0之间。

PauseAudio(channel, value=True) link

音频通道 channel 设置暂停标识(flag)。

如果 value 为True,通道channel会暂停。相反,通道channel会从暂停恢复。如果值为“toggle”,暂停标识会进行切换,即布尔值进行“逻辑非”操作。

Play(channel, file, selected=None, **kwargs) link

在指定通道(channel)播放一个音频文件。

channel

播放使用的通道(channel)。

file

播放的文件。

selected

若为True,当文件在通道上播放时,使用这个行为的按钮会被标记为“被选中”。若为False,这个行为不会触发按钮启动播放。若为None,当通道是一个音乐(music)通道时按钮会被标记为“被选中”。

其他关键词参数会被传给 renpy.music.play()

Queue(channel, file, **kwargs) link

在给定的通道上将音频文件队列化。

channel

播放使用的通道(channel)。

file

播放的文件。

其他关键词参数会被传给 renpy.music.queue()

SetMixer(mixer, volume) link

mixer 的音量设置为 value

mixer

需要调整音量的混合器(mixer)。这个字符串通常是“main”、“music”、“sfx”或“voice”。混合器的信息详见 音量

value

调整的目标音量值。是一个位于0.0至1.0闭区间内的数值。

SetMute(mixer, mute) link

将一个或多个混合器设置为静音状态。当混合器静音时,与混合器关联的音频通道会停止播放音频。

mixer

给出单个混合器名称的字符串,或一个混合器列表名称的字符串列表。混合器名称通常是“music”、“sfx”或“voice”。

mute

若为True则静音混合器,若为False则取消混合器静音。

Stop(channel, **kwargs) link

停用某个音频通道。

channel

停用的音频通道名。

关键词参数会传给 :func:renpy.music.stop()。

ToggleMute(mixer) link

切换混合器的静音状态。

mixer

单个混合器名称的字符串,或一个混合器列表名称的字符串列表。混合器名称通常是“music”、“sfx”或“voice”。

获取焦点行为 link

CaptureFocus(name='default') link

若某个可视组件获得焦点并执行该行为,将存储一块包含可视组件的矩形区域,并根据入参 name 命名。 该矩形区域可通过 GetFocusRect()nearrect 组件的 focus 特性访问。 若没有可视组件获得焦点,上次捕获的矩形区域将从存储区移除。

name

获得焦点矩形区域存储名称。其应是一个字符串。 如果设置为“tooltip”则比较特殊,当提示消息改变时,将执行自动捕获。

ClearFocus(name='default') link

使用 CaptureFocus() 函数清除存储的矩形区域焦点。

GetFocusRect(name='default') link

若指定名称的矩形区域在存储区中(无论是使用 CaptureFocus() 捕获还是tooltip自动捕获),返回一个(x, y, h, w)形式的矩形。否则返回None。

name

获得焦点矩形区域检索名称。其应是一个字符串。 如果设置为“tooltip”则比较特殊,当提示消息改变时,将执行自动捕获。

ToggleFocus(name='default') link

若焦点矩形区域存在则清除,否则捕获。

name

获得焦点矩形区域存储名称。其应是一个字符串。 如果设置为“tooltip”则比较特殊,当提示消息改变时,将执行自动捕获。

其他行为 link

这些是其他地方找不到的一些行为。

Confirm(prompt, yes, no=None, confirm_selected=False) link

提示用户进行确认的一种行为。如果用户点击了“是”,将执行 yes 行为。否则,执行 no 行为。

prompt

向用户显示的提示内容。

confirm_selected

若为True,当yes行为被选中后,提示 prompt 依然会显示。若为False,也是默认值, yes 行为选中后提示就不再显示。

这个行为的可用性和可选择性与 yes 行为相匹配。

该行为还有个函数版本 renpy.confirm()

CopyToClipboard(s) link

将字符串 s 复制到系统剪贴板。该行为只能在电脑和手机上运行,Web平台无法正常运行。

DisableAllInputValues() link

禁用所有活动的输入项。如果存在默认输入项的话,它将重新获得焦点。否则,任何输入项都不会获得焦点。

EditFile(filename=None, line=1) link

要求Ren’Py在文本编辑器中打开指定文件。 该行为仅在某些平台能运行。

filename

指定要打开文件的文件名。若为None,则使用当前使用的文件名和文件行数,line 参数将被忽略。

line

一个数字。打开文件后,游标(cursor)会移动到 line 对应的行开头。

ExecJS(code) link

执行指定的JavaScript代码。仅支持Web平台。在其他平台运行会抛出异常。 JS脚本会在窗口上下文中异步执行,返回结果不能通过该行为获得。

code

待执行的JaveScript代码。

Function(callable, *args, _update_screens=True, **kwargs) link

这个行为会 调用 callable(*args, **kwargs)

callable

可调用的对象。该项假设遇到两个相等的可调用对象,调用任意一个都是相同的。

args

传给 callable 的固定位置入参。

kwargs

传给 callable 的关键词入参。

_update_screens

若为True,在函数返回后重启交互系统并更新界面。

这个行为使用一个可选的 _update_screens 关键词参数,而且这个参数默认为True。参数为True时,函数返回后,互动行动会重新开始,各界面会更新。

如果函数返回一个非空值,互动行为会停止并返回那个值。(使用call screen语句得到的返回值放置在 _return 变量中。)

创作者可以从 Action 派生自己的子类,并替代此Function函数。 这样就可以自己命名行为,并判断对应组件是否选中和可激活的。

Help(help=None) link

显示帮助。

help

用于提供帮助的字符串。其被用于以下两种情况:

  • 如果存在一个对应名称的文本标签(label),对应的标签会在新的上下文中被调用。

  • 否则,内嵌某个给定文件名称,并使用web浏览器打开。

help 为None,config.help 配置项会被用作默认值。 若 help 为None,且配置了 config.help_screen ,则在新的上下文中显示配置的帮助界面。 其他情况下,不做任何处理。

HideInterface() link

隐藏用户接口(UI),直到出现用户点击事件。也可以在游戏中按键盘H键隐藏UI。

If(expression, true=None, false=None) link

根据 expression 的结果选择使用 truefalse 的行为。这个函数用在基于某个表达式的结果选择执行行为。注意入参的默认值None,也可以用作一个行为,禁用某个按钮。

InvertSelected(action) link

该行为将提供行为的选项状态反转,可以应用在别的方法上。

MouseMove(x, y, duration=0) link

将鼠标指针移动到坐标 x, y 。如果设备没有鼠标指针,或者_preferences.mouse_move的值是False,那什么都不会发生。

duration

移动鼠标指针行为消耗的时间,单位为秒。这个时间段内,鼠标可能不会响应用户操作。

Notify(message) link

使用 renpy.notify() 函数显示 message 内容。

OpenDirectory(directory) link

在文件资源管理器中打开指定目录 directory。目录 directory 为以 config.basedir 为根目录的相对目录。

OpenURL(url) link

在web浏览器中打开 url

QueueEvent(event, up=False) link

使用 renpy.queue_event() 将给定的事件消息加入到事件队列中。

RestartStatement() link

这个行为会使Ren’Py回滚到当前语句之前,并再次执行当前语句。可以用在某些持久化变量改变后影响语句显示效果的情况。

在菜单上下文运行的话,等到用户退出并回到上一层上下文时才会执行回滚行为。

RollForward(*args, **kwargs) link

这个行为触发前滚,前提是前滚可行。否则,该行为是禁用状态。

Rollback(*args, **kwargs) link

这个行为触发回滚,前提是回滚可行。否则,不会发生任何事。

入参将传给 :func:renpy.rollback() 函数,除非参数 force 是默认值“menu”。

RollbackToIdentifier(identifier) link

这个行为触发回滚至某个标识符(identifier)。回滚标识符会作为HistoryEntry对象的一部分返回。

Screenshot(*args, **kwargs) link

屏幕截图。

Scroll(id, direction, amount='step', delay=0.0) link
id

当前界面中条(bar)、视口(viewport)或vpgrid的id。

direction

如果是vbar,“increase”或“decrease”二选一;如果是视口或vpgrid,“horizontal increase”、“vertical increase”、“horizontal decrease”或“vertical decrease”,四选一。

amount

滚动数量。可以使用像素数,也可以写“step”或“page”。

delay

若非零,表示动画延迟时间值。

SelectedIf(action, /) link

这个行为允许“根据一个行为列表”判断一个按钮是否被标记为选中状态。其应被用作包含一个或多个行为的列表的一部分。例如:

# 如果mars_flag为True时,按钮会被选中
textbutton "Marsopolis":
    action [ SelectedIf(SetVariable("mars_flag", True)), SetVariable("on_mars", True) ]

点击按钮后,在SeletedIf内部的行为会被正常执行。

SensitiveIf(action, /) link

这个行为允许“根据一个行为列表”判断一个按钮是否被标记为可用状态。其应被用作包含一个或多个行为的列表的一部分。例如:

# 如果mars_flag为True时,按钮是可用的
textbutton "Marsopolis":
    action [ SensitiveIf(SetVariable("mars_flag", True)), SetVariable("on_mars", True) ]

点击按钮后,在SensitiveIf内部的行为会被正常执行。

Skip(fast=False, confirm=False) link

使游戏开始使用跳过(skipping)。如果游戏处于菜单上下文下,这个行为导致回到游戏界面。否则,这个行为启用跳过(skipping)。

fast

若该值为True,直接跳到下一个菜单选项。

confirm

若该值为True,在使用跳过(skipping)前需要用户确认。

With(transition) link

使 transition 生效。

还有一些行为记录在文档的其他页面,比如 LanguageReplayEndReplaygui.SetPreferencegui.TogglePreferenceStylePreferencevoice actions

可以通过 Action 类创建新的行为。

条(bar)值 link

条值与条(bar)一同使用,设置条(bar)的值,且允许条(bar)调整某个潜在特性。可以通过创建 BarValue 类的子类创建一个新的条值。 所有的BarValue类都有关键词 step ,也可以接受关键词 force_step ,具体情况详见 ui.adjustment()

AnimatedValue(value=0.0, range=1.0, delay=1.0, old_value=None) link

将某个值序列化,使用 delay 秒的时间将 old_value 的值转为 value 的值。

value

value值自身,是一个数值。

range

value值的范围,是一个数值。

delay

序列化value值的时间,单位为秒。默认值是1.0。

old_value

旧的value值。若为None,我们使用AnimatedValue想要替换的value值。否则,其会初始化为 value 的值。

AudioPositionValue(channel='music', update_interval=0.1) link

显示在 channel 通道播放音频文件播放位置的值。

update_interval

值的更新频率,单位为秒。

DictValue(dict, key, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link

允许用户使用字典型数据的键调整对应的值。

dict

字典,或列表。

key

字典的键,或者列表的索引(index)。

range

调整的数值范围。

max_is_zero

若为True,当键对应的值为0时,条(bar)值范围会调整为从1到0,所有其他值都会被降低到1。同样的,当条(bar)被设置成最大值时,键的值将设置为0。

该参数只在内部使用。

style

创建的条(bar)的样式。

offset

添加到条值的一个偏移量。

step

调整条(bar)值的步进大小。若为空,默认为条(bar)的十分之一。

action

若非None,当字段改变时,将调用指定行为(action)。

FieldValue(object, field, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link

允许用户调整某个对象上字段(field)的条(bar)值。

object

调整的对象。

field

字段(filed)名称的字符串。

range

可调整的范围。

max_is_zero

若为True,当键对应的值为0时,条(bar)值范围会调整为从1到0,所有其他值都会被降低到1。同样的,当条(bar)被设置成最大值时,字段(filed)的值将设置为0。

该参数只在内部使用。

style

创建的条(bar)的样式。

offset

添加到条值的一个偏移量。

step

调整条(bar)值的步进大小。若为空,默认为条(bar)的十分之一。

action

若非None,当字段改变时,将调用指定行为(action)。

LocalVariableValue(variable, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link

通过 use 引用的界面内,使用条(bar)值调整某个变量。

如果要调整某个最上层界面的变量,推荐使用 ScreenVariableValue()

更多信息参见 use

该行为仅能创建在变量所属的上下文中,且不能赋值到其他地方。

variable

一个字符串,表示待调整变量名。

range

可调整的范围。

max_is_zero

若为True,当键对应的值为0时,条(bar)值范围会调整为从1到0,所有其他值都会被降低到1。同样的,当条(bar)被设置成最大值时,字段(filed)的值将设置为0。

该参数只在内部使用。

style

创建的条(bar)的样式。

offset

添加到条值的一个偏移量。

step

调整条(bar)值的步进大小。若为空,默认为条(bar)的十分之一。

action

若非None,当字段改变时,将调用指定行为(action)。

MixerValue(mixer) link

音频混合器的值。

mixer

待调整的混合器名。通常是“music”、“sfx”或“voice”,创作者也可以创建新的混合器。 更多信息参见 音量

ScreenVariableValue(variable, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link

用于调整界面变量值的条(bar)值。

该行为针对的变量范围包括使用 use 引用其他界面的界面自身和引用的子界面。 如果仅仅要修改被 use 引用的子界面中的变量,推荐使用 LocalVariableValue()

variable

一个字符串,给出了待调整的变量名。

range

可调整的范围。

max_is_zero

若为True,当键对应的值为0时,条(bar)值范围会调整为从1到0,所有其他值都会被降低到1。同样的,当条(bar)被设置成最大值时,variable的值将设置为0。

这偏向于某些内部使用。

style

创建的条(bar)的样式。

offset

添加到条值的一个偏移量。

step

调整条(bar)值的步进大小。若为空,默认为条(bar)的十分之一。

action

若非None,当字段改变时,将调用指定行为(action)。

StaticValue(value=0.0, range=1.0) link

这个行为允许某个值被指定为静态。

value

值自身,一个数值。

range

数值范围。

VariableValue(variable, range, max_is_zero=False, style='bar', offset=0, step=None, action=None, force_step=False) link

允许用户调整默认存储区变量值的条(bar)值。

variable

一个字符串,给出了待调整的变量名。

range

可调整的范围。

max_is_zero

若为True,当键对应的值为0时,条(bar)值范围会调整为从1到0,所有其他值都会被降低到1。同样的,当条(bar)被设置成最大值时,variable的值将设置为0。

这偏向于某些内部使用。

style

创建的条(bar)的样式。

offset

添加到条值的一个偏移量。

step

调整条(bar)值的步进大小。若为空,默认为条(bar)的十分之一。

action

若非None,当字段改变时,将调用指定行为(action)。

XScrollValue(viewport) link

根据给定的id,在当前界面水平滚动视口(viewport)的可调整值。视口(viewport)必须在条(bar)值出现前定义。

YScrollValue(viewport) link

根据给定的id,在当前界面垂直滚动视口(viewport)的可调整值。视口(viewport)必须在条(bar)值出现前定义。

输入(input)值 link

输入(input)值与文本输入一起使用,用于设置默认文本、接受改变文本、响应回车键、决定文本是否可编辑。要创建新的输入(input)值,可以使用 InputValue 类的子类。

Ren’Py定义的输入(input)值继承自InputValue类,这意味着所有输入值均含有Enable()、Disable()和Toggle()方法,分别执行启用(enable)、禁用(disable)和切换编辑(toggle edit)行为。可以参考 DisableAllInputValues() 行为。

DictInputValue(dict, key, default=True, returnable=False) link

根据输入值更新 dict[key]

dict

一个字典或列表对象。

default

若为True,输入默认是可以被编辑的。

returnable

若为True,当用户按下回车键,输入的值就会被返回。

FieldInputValue(object, field, default=True, returnable=False) link

根据输入值更新某个对象的字段(field)。

field

字段(filed)名称的字符串。

default

若为True,输入默认是可以被编辑的。

returnable

若为True,当用户按下回车键,输入的值就会被返回。

FilePageNameInputValue(pattern='Page {}', auto='Automatic saves', quick='Quick saves', page=None, default=False) link

根据输入值更新文件页面(page)名。

pattern

用于页面(page)的默认名。使用Python风格的替换,例如花括号{}里的内容可以替换为页面(page)的编号。

auto

自动保存页面(page)的名称。

quick

快速保存页面(page)的名称。

page

若该参数存在,给出了要显示的页面(page)编号。通常该值设定为None,表示当前页面。

default

若为True,输入默认是可以被编辑的。

LocalVariableInputValue(variable, default=True, returnable=False) link

根据输入值更新某个被 use 引用的界面的变量。

如果目标变量在某个顶层界面中,推荐使用 ScreenVariableInputValue()

更多信息参见 use

该行为仅能创建在变量所属的上下文中,且不能赋值到其他地方。

variable

待更新变量名,一个字符串。

default

若为True,输入默认是可以被编辑的。

returnable

若为True,当用户按下回车键,输入的值就会被返回。

ScreenVariableInputValue(variable, default=True, returnable=False) link

根据输入值更新某个界面的变量。

该行为针对的变量范围包括使用 use 引用其他界面的界面自身和引用的子界面。 如果仅仅要修改被 use 引用的子界面中的变量,推荐使用 LocalVariableInputValue()

variable

待更新变量名,一个字符串。

default

若为True,输入默认是可以被编辑的。

returnable

若为True,当用户按下回车键,输入的值就会被返回。

VariableInputValue(variable, default=True, returnable=False) link

根据输入值更新变量。

variable

待更新变量名,一个字符串。

变量名除了可以是类似“strength”的字符串之外,也可以是使用带英文标点“.”的字段名,比如“hero.strength”或“persistent.show_cutscenes”。

default

若为True,输入默认是可以被编辑的。

returnable

若为True,当用户按下回车键,输入的值就会被返回。

函数和类 link

这些函数和类在界面方面很有用。

环境设定(preference) link

所有环境设定都可以基于上面给出的行为Action和值Value来定义。这需要一些Ren’Py方面的知识,才能选择正确的环境设定并运用。环境设定构造器(constructor)让这件事变得简单,通过创建一个行为或值,就能基于名称应用在默认的环境设定界面上。

Preference(name, value=None, range=None) link

其从某项环境设定构造了合适的行为或者值。环境设定名称应该是在变准菜单中出现的名称,值应该是选项名、“toggle”轮询选项、一个指定的值,或者按钮的名称。

可以与按钮和热区一起使用的行为如下:

  • Preference(“display”, “fullscreen”) - 全屏模式显示。

  • Preference(“display”, “window”) - 窗口模式显示,1倍大小。

  • Preference(“display”, 2.0) - 窗口模式显示,2倍大小。

  • Preference(“display”, “any window”) - 用前一种窗口尺寸显示。

  • Preference(“display”, “toggle”) - 切换显示模式。

  • Preference(“transitions”, “all”) - 显示所有转场(transition)效果。

  • Preference(“transitions”, “none”) - 不显示转场(transition)效果。

  • Preference(“transitions”, “toggle”) - 切换转场(transition)效果。

  • Preference(“video sprites”, “show”) - 显示所有视频精灵(sprite)。

  • Preference(“video sprites”, “hide”) - 可能的话,将视频精灵(sprite)降格为图片显示。

  • Preference(“video sprites”, “toggle”) - 切换图像降格行为。

  • Preference(“show empty window”, “show”) - 允许“window show”和“window auto”语句在say语句之外显示一个空窗口。

  • Preference(“show empty window”, “hide”) - 不允许“window show”和“window auto”语句在say语句之外显示一个空窗口。

  • Preference(“show empty window”, “toggle”) - 切换上面两种情况。

  • Preference(“text speed”, 0) - 文本立刻显示。

  • Preference(“text speed”, 142) - 设置文本显示速度为每秒142字符。

  • Preference(“joystick”) - 显示joystick环境设定。

  • Preference(“skip”, “seen”) - 只跳过看过的信息。

  • Preference(“skip”, “all”) - 跳过所有信息,无论是否看过。

  • Preference(“skip”, “toggle”) - 切换上面两种情况。

  • Preference(“begin skipping”) - 开始跳过(skipping)。

  • Preference(“after choices”, “skip”) - 在选项后跳过。

  • Preference(“after choices”, “stop”) - 在选项后停止跳过。

  • Preference(“after choices”, “toggle”) - 切换上面两种情况。

  • Preference(“auto-forward time”, 0) - 将自动前进的时间设置为无限。

  • Preference(“auto-forward time”, 10) - 设置自动前进时间(单位为每秒250个字符)。

  • Preference(“auto-forward”, “enable”) - 启用自动前进模式。

  • Preference(“auto-forward”, “disable”) - 禁用自动前进模式。

  • Preference(“auto-forward”, “toggle”) - 切换自动前进模式。

  • Preference(“auto-forward after click”, “enable”) - 在一次点击后维持自动前进模式。

  • Preference(“auto-forward after click”, “disable”) - 在一次点击后禁用自动前进模式。

  • Preference(“auto-forward after click”, “toggle”) - 切换上面两种情况。

  • Preference(“automatic move”, “enable”) - 启用自动鼠标模式。

  • Preference(“automatic move”, “disable”) - 禁用自动鼠标模式。

  • Preference(“automatic move”, “toggle”) - 切换自动鼠标模式。

  • Preference(“wait for voice”, “enable”) - 自动前进时,等待当前语音播放完毕。

  • Preference(“wait for voice”, “disable”) - 自动前进时,不等待当前语音播放完毕。

  • Preference(“wait for voice”, “toggle”) - 切换语音等待模式。

  • Preference(“voice sustain”, “enable”) - 当前互动行为中维持语音。

  • Preference(“voice sustain”, “disable”) - 当前互动行为中不维持语音。

  • Preference(“voice sustain”, “toggle”) - 切换语音维持模式。

  • Preference(“music mute”, “enable”) - 音乐混合器静音。

  • Preference(“music mute”, “disable”) - 取消音乐混合器静音。

  • Preference(“music mute”, “toggle”) - 切换音乐静音状态。

  • Preference(“sound mute”, “enable”) - 音效混合器静音。

  • Preference(“sound mute”, “disable”) - 取消音效混合器静音。

  • Preference(“sound mute”, “toggle”) - 切换音效静音状态。

  • Preference(“voice mute”, “enable”) - 语音混合器静音。

  • Preference(“voice mute”, “disable”) - 取消语音混合器静音。

  • Preference(“voice mute”, “toggle”) - 切换语音静音状态。

  • Preference(“mixer <mixer> mute”, “enable”) - 将指定的混合器静音。

  • Preference(“mixer <mixer> mute”, “disable”) - 取消指定的混合器静音。

  • Preference(“mixer <mixer> mute”, “toggle”) - 切换指定的混合器静音状态。

  • Preference(“all mute”, “enable”) - 所有混合器静音。

  • Preference(“all mute”, “disable”) - 取消所有混合器静音。

  • Preference(“all mute”, “toggle”) - 切换所有混合器静音状态。

  • Preference(“main volume”, 0.5) - 设置对所有音频通道的调整值。

  • Preference(“music volume”, 0.5) - 设置音乐音量。

  • Preference(“sound volume”, 0.5) - 设置音效音量。

  • Preference(“voice volume”, 0.5) - 设置语音音量。

  • Preference(“mixer <mixer> volume”, 0.5) - 设置指定混合器音量。

  • Preference(“emphasize audio”, “enable”) - 加强在config.emphasize_audio_channels中定义的音频通道。

  • Preference(“emphasize audio”, “disable”) - 取消加强在config.emphasize_audio_channels中定义的音频通道。

  • Preference(“emphasize audio”, “toggle”) - 切换音频加强状态。

  • Preference(“self voicing”, “enable”) - 启用自动语音。

  • Preference(“self voicing”, “disable”) - 禁用自动语音。

  • Preference(“self voicing”, “toggle”) - 切换自动语音模式。

  • Preference(“clipboard voicing”, “enable”) - 启用剪贴板语音。

  • Preference(“clipboard voicing”, “disable”) - 禁用剪贴板语音。

  • Preference(“clipboard voicing”, “toggle”) - 切换剪贴板语音状态。

  • Preference(“debug voicing”, “enable”) - 启用自动语音debug。

  • Preference(“debug voicing”, “disable”) - 禁用自动语音debug。

  • Preference(“debug voicing”, “toggle”) - 切换自动语音debug状态。

  • Preference(“rollback side”, “left”) - 触摸屏幕左侧触发回滚。

  • Preference(“rollback side”, “right”) - 触摸屏幕右侧触发回滚。

  • Preference(“rollback side”, “disable”) - 触摸屏幕不触发回滚。

  • Preference(“gl powersave”, True) - 使用省电模式降低帧率。

  • Preference(“gl powersave”, False) - 不使用省电模式降低帧率。

  • Preference(“gl powersave”, “auto”) - 使用电池情况下自动启用省电模式。

  • Preference(“gl framerate”, None) - 运行时显示帧率。

  • Preference(“gl framerate”, 60) - 在给定的帧率下运行。

  • Preference(“gl tearing”, True) - (设备性能不足时)拖慢而不是跳帧。

  • Preference(“gl tearing”, False) - (设备性能不足时)跳帧而不是拖慢。

  • Preference(“font transform”, “opendyslexic”) - 将字体转为opendyslexic(译者注:为阅读障碍人群设计的字体)的配置项。

  • Preference(“font transform”, “dejavusans”) - 将字体转为deja vu sans的配置项。

  • Preference(“font transform”, None) - 禁用字体转换。

  • Preference(“font size”, 1.0) - 字号缩放因子配置项。

  • Preference(“font line spacing”, 1.0) - 字体行距缩放因子配置项。

  • Preference(“system cursor”, “enable”) - 使用系统贯标,忽略 config.mouse。

  • Preference(“system cursor”, “disable”) - 使用config.mouse的光标。

  • Preference(“system cursor”, “toggle”) - 切换系统光标。

  • Preference(“high contrast text”, “enable”) - 启用黑背景白文字。

  • Preference(“high contrast text”, “disable”) - 禁用高对比文本。

  • Preference(“high contrast text”, “toggle”) - 切换高对比文本。

  • Preference(“audio when minimized”, “enable”) - 窗口最小化后保持声音播放。

  • Preference(“audio when minimized”, “disable”) - 窗口最小化后停止声音播放。

  • Preference(“audio when minimized”, “toggle”) - 切换窗口最小化后的声音播放设置。

  • Preference(“audio when unfocused”, “enable”) - 窗口失去焦点后保持声音播放。

  • Preference(“audio when unfocused”, “disable”) - 窗口失去焦点后停止声音播放。

  • Preference(“audio when unfocused”, “toggle”) - 切换窗口失去焦点后的声音播放设置。

  • Preference(“web cache preload”, “enable”) - 启用web缓存预加载。

  • Preference(“web cache preload”, “disable”) - 禁用web缓存预加载,并删除预加载的数据。

  • Preference(“web cache preload”, “toggle”) - 切换web缓存预加载设置。

  • Preference(“voice after game menu”, “enable”) - 进入游戏设置菜单界面时继续播放声音。

  • Preference(“voice after game menu”, “disable”) - 进入游戏设置菜单界面时停止播放声音。

  • Preference(“voice after game menu”, “toggle”) - 切换进入游戏设置菜单界面时的播放声音设置。

可以与条(bar)一起使用的值如下:

  • Preference(“text speed”)

  • Preference(“auto-forward time”)

  • Preference(“main volume”)

  • Preference(“music volume”)

  • Preference(“sound volume”)

  • Preference(“voice volume”)

  • Preference(“mixer <mixer> volume”)

  • Preference(“self voicing volume drop”)

  • Preference(“font size”)

  • Preference(“font line spacing”)

range 参数可以指定某个条(bar)的数值范围。例如,“text speed”的默认值是200cps。“auto-forward time”的默认值是每段文本30秒。(这些是最大值,而不是默认值。)

可以被按钮使用的行为包括: * Preference(“renderer menu”) - 显示渲染器(renderer)菜单。 * Preference(“accessibility menu”) - 显示数据(accessibility)读写菜单 * Preference(“reset”) - 将环境设定(preference)重置为默认值

上面的界面是内部定义的,无法定制化。

GetCharacterVolume(voice_tag) link

该函数根据关联的语音标签(tag),返回一个介于0.0到1.0之间的数值,表示对应 voice 声道最大音量的一个比例。

游戏手柄 link

这些函数和行为跟游戏手柄一起工作。

GamepadCalibrate() link

调用手柄校正的行为。

GamepadExists(developer=True) link

检测手柄是否存在的函数。存在返回True,不存在返回False。

developer

强制该函数返回True,config.developer 必须配置为True。

文件函数 link

这些函数返回关于文件的有用信息。它们使用相同的默认页面(page)相关的文件行为。

FileCurrentPage() link

将当前文件页面(page)以字符串返回。

FileCurrentScreenshot(empty=None, **properties) link

一个显示屏幕截图的可显示控件。其将保存你在当前文件中,前提是进入了菜单或使用 FileTakeScreenshot() 采集了屏幕截图。

如果没有当前屏幕截图,对应的位置上显示 empty 的图像。(如果 empty 是空值None,默认为 Null() 。)

FileJson(name, key=None, empty=None, missing=None, page=None, slot=False) link

根据 name 参数读取对应的Json数据。

如果存档槽位是空的,则返回 empty

如果存档槽位不是空的,并且 key 为None,返回包含Json数据的整个目录

如果 key 不为None,则返回json[key],前提是 key 在存档json对象中有定义。如果存档存在但不包含 key ,就返回 missing 。如果存档槽位为空,则返回 empty

使用 config.save_json_callbacks() 注册的回调函数可用于向存档槽位中添加Json。

默认情况下,Json中包含下列key:

_save_name

存档时 save_name 的值。

_renpy_version

创建存档的Ren’Py版本号。

_version

创建存档时的 config.version 值。

_game_runtime

调用 renpy.get_game_runtime() 后得到的返回结果。

_ctime

存档创建时间。UTC时间,即从1970年1月1日0点开始计算的秒数。

FileLoadable(name, page=None, slot=False) link

该函数在存档文件可加载的情况下返回True,否则返回False。

FileNewest(name, page=None, slot=False) link

如果存档文件是最后一次存档返回True,否则返回False。

FilePageName(auto='a', quick='q') link

以字符串形式返回当前存档文件页面(page)名称。如果是一个普通页面(page),该函数返回页面编号。否则,返回 autoquick

FileSaveName(name, empty='', page=None, slot=False) link

返回存档文件保存时的save_name,如果文件不存在则返回 empty

FileScreenshot(name, empty=None, page=None, slot=False) link

返回指定文件相关的屏幕截图。如果文件不能加载,返回 empty ,前提 empty 的值不是None。在文件不能加载且 empty 为空的情况下,可视组件Null会被创建。

返回值是一个可视组件。

FileSlotName(slot, slots_per_page, auto='a', quick='q', format='%s%d') link

返回指定编号的存档槽位名。前提是普通页面(page)下的槽位都按顺序从1开始编号,并且页面也从1开始编号。当槽位编号为2,每个页面槽位数(slots_per_page)为10,其他变量都是默认值的情况下:

  • 显示第一页面时,返回“2”。

  • 显示第二页面时,返回“12”。

  • 显示自动页面时,返回“a2”。

  • 显示快速存档页面时,返回“q2”。

slot

指定的槽位编号。

slots_per_page

每页槽位数量。

auto

自动存档页面的前缀。

quick

快速存档页面的前缀。

format

格式代码。包含两部分:一个页面前缀字符串,一个槽位编号整数。

FileTime(name, format='%b %d, %H:%M', empty='', page=None) link

按指定格式,返回存档时间。如果没有匹配的存档文件就返回 empty

返回值是一个字符串。

FileUsedSlots(page=None, highest_first=True) link

返回页面上所有可用的经过编号的文件列表。

page

待扫描的页面名。若为None,就使用当前页面。

highest_first

若为True,列表内文件按编号从大到小排序。否则,列表内文件按编号从小到大排序。

头像函数 link

该函数返回使用的头像。

SideImage() link

返回与当前发言角色相关的头像。如果头像不存在则返回一个空的可视组件。

其他函数 link

CurrentScreenName() link

返回当前界面名称。如果没有当前显示界面则返回None。 如果某个界面使用 use 引用了其他界面,则返回此界面,而不是被引用的界面。

Tooltips link

所有可视组件上可用的 tooltip 特性和GetTooltip函数都可以读写tooltip。当可视组件获得焦点时,GetTooltip函数会返回这个组件的tooltip特性的值。

提醒一下,传入 tooltip 特性的值需要支持是否相等的判断。

这里是一个样例:

screen tooltip_example():
    vbox:
        textbutton "北":
            action Return("n")
            tooltip "去约见北极熊。"

        textbutton "南":
            action Return("s")
            tooltip "前往热带。"

        textbutton "东":
            action Return("e")
            tooltip "我们可以拥抱黎明。"

        textbutton "西":
            action Return("w")
            tooltip "去欣赏最美的日落。"

        $ tooltip = GetTooltip()

        if tooltip:
            text "[tooltip]"

可视组件 nearrect 可用于显示“弹窗型”tooltip,并且可以获取一个特殊的“tooltip”焦点名, 会将最后获取焦点的位置设置为tooltip对象:

screen tooltip_example2():
    frame:

        padding (20, 20)
        align (.5, .3)

        has vbox

        textbutton "北":
            action Return("n")
            tooltip "去约见北极熊。"

        textbutton "南":
            action Return("s")
            tooltip "前往热带。"

        textbutton "东":
            action Return("e")
            tooltip "我们可以拥抱黎明。"

        textbutton "西":
            action Return("w")
            tooltip "去欣赏最美的日落。"

    # 这是界面上最后显示的内容。

    $ tooltip = GetTooltip()

    if tooltip:

        nearrect:
            focus "tooltip"
            prefer_top True

            frame:
                xalign 0.5
                text tooltip
GetTooltip(screen=None, last=False) link

返回当前获得焦点的可视组件的tooltip,如果可视组件未获得焦点则返回None。

screen

如果非空,这个参数应该是某个界面的名称或者标签(tag)。如果获得焦点的可视组件是界面的一部分,则该函数只返回tooltip。

last

若为True,返回此函数上次调用的非None返回结果。

传统方法 link

Warning

这种传统方法已被废弃,并使用上面说的方法替代。不过你可能会在一些老版本的项目中见到它。

当按钮处于指针悬停状态时,tooltip类会改变界面。

class Tooltip(default) link

当鼠标指针悬停在某个区域上时,一个tooltip对象可以用于提示对应界面的功能。

tooltip对象有一个 value 字段,当tooltip对象被创建时会通过构造器传入 default 作为默认值。当通过tooltip创建的某个按钮行为被使用时,value字段就会根据关联的行为改变对应值。

Action(value) link

将按钮的hovered特性对应的行为返回。当按钮处于指针悬停状态时,tooltip的value字段会被设置为 value 。当按钮失去焦点时,tooltip的value字段会恢复为默认值。

在某个界面使用tooltip时,常用做法是在default语句中创建tooltip对象。tooltip的值和行为的方法可以在界面中使用。使用时可以按任何顺序——在行为执行前就可以使用tooltip的值。

tooltip可以使用任何类型的值。在下面的样例中,我们使用text语句在界面中显示字符串,使用add语句添加可视组件也是可行的。还可以设计更多复杂的行为。

screen tooltip_test:

    default tt = Tooltip("没有选择任何按钮。")

    frame:
        xfill True

        has vbox

        textbutton "One.":
            action Return(1)
            hovered tt.Action("The loneliest number.")

        textbutton "Two.":
            action Return(2)
            hovered tt.Action("Is what it takes.")

        textbutton "Three.":
            action Return(3)
            hovered tt.Action("A crowd.")

        text tt.value