RenPy中文空间

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 66|回复: 0

模式(新)

 关闭 [复制链接]
发表于 2018-5-16 08:05:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
模式(翻译:被诅咒的章鱼)

在Ren’Py中,模式(mode)是一种描述交互类型的简练方法。当Ren’Py收到某个模式的报告,用户自定义的回调函数就可以运行。这些回调函数通过调整模式进行相应,可能会重新配置用户接口。例如,一个从ADV模式切换到NVL模式或进入菜单界面等,可能会触发一个转场(transition)。

模式系统的目标是提供一个强效和扩展性的方式,检测和响应这些变化。

默认模式
下列模式分别对应内建的交互行为:

start

    当创建一个新的上下文(context)时,比如游戏开始,Ren’Py就会处于这种模式。Ren’Py从不自动进入这个模式,但在初始化模式列表时包括了start。

say
    当ADV模式下say语句执行时,Ren’Py进入的模式。

menu
    当ADV模式下menu语句执行时,Ren’Py进入的模式。

nvl
    当NVL模式下say语句执行时,Ren’Py进入的模式。

nvl_menu
    当NVL模式下menu语句执行时,Ren’Py进入的模式。

pause
    当 renpy.pause() 运行时,Ren’Py进入的模式。在一个 pause 语句的暂停时间内,Ren’Py也处于这种模式。

with
    The mode Ren'Py enters when a transition introduced by the with statement occurs. This is also used for pause statement with a duration specified.
    当使用 with 语句进入一个转场(transition)时,Ren’Py进入的模式。

    注意,在 with语句开头,Ren’Py就进入了 with模式,而在 scene、show 和 hide 语句 执行后 Ren’Py才会切换模式。

screen
    当使用 call screen 语句唤起某个界面时,Ren’Py进入的模式。

imagemap
    当使用 renpy.imagemap() 唤起旧样式的 imagemap 时,Ren’Py进入的模式。

input
    当使用 renpy.input() 函数请求文本输入时,Ren’Py进入的模式。

其他模式可以通过调用 renpy.mode 函数进入。

renpy.get_mode()
    返回当前模式,如果未定义则返回 None。

renpy.mode(mode)
    让Ren’Py进入某个模式,如果已经处于这个模式则保持。

模式回调函数
config.mode_callbacks() 变量包含了一个模式回调函数的列表。当Ren’Py进入某个模式时,就会唤起列表中的模式回调函数。模式回调函数使用两个参数:

mode
    一个字符串,表示进入的模式名称。

old_modes
    一个字符串列表,表示系统之前曾进入过的所有模式,按时间从近到远排序。

注意,当进入的模式就是现在处于的模式时, old_modes 的第一个元素会等于 mode 。
样例模式回调函数

当从ADV模式切换到NVL模式时,模式回调函数会触发一个转场(transition),反之亦然。这是Ren’Py内置功能的一部分,不需要显示调用。
[RenPy] 纯文本查看 复制代码
init python:
    def _nvl_adv_callback(mode, old_modes):

        old = old_modes[0]

        if config.adv_nvl_transition:
            if mode == "nvl" or mode == "nvl_menu":
                if old == "say" or old == "menu":
                    nvl_show(config.adv_nvl_transition)

        if config.nvl_adv_transition:
            if mode == "say" or mode == "menu":
                if old == "nvl" or old == "nvl_menu":
                    nvl_hide(config.nvl_adv_transition)

    config.mode_callbacks.append(_nvl_adv_callback)

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号 | 苏公网安备 32092302000068号 )

GMT+8, 2018-8-21 06:29 , Processed in 0.026404 second(s), 21 queries , File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表