传送至某行link
Ren’Py支持脚本中“传送(warp)至某行”功能,不需要开发者运行整个脚本到达那处。尽管使用传送技巧总是会伴随着一大堆告警(warning)信息,在提供实时预览方面依然很常用。
调用传送功能时,使用命令行运行Ren’Py,使用参数 --warp ,后面再跟上filename:line,这样就能传送到需要的那行。举例:
renpy.exe my_project --warp script.rpy:458
(my_project 是工程基础目录的全路径。)
调用传送功能时,Ren’Py出列了一系列工作。它首先找到程序中的所有scene语句,然后尝试找到使用scene语句到达脚本中每条语句的路径,接着选取最接近目标行的路径(在目标行前或正好到达目标行)。Ren’Py从找到的语句倒推至某个scene语句,记录下使用的路径。然后Ren’Py会执行找到的路径上所有scene和show、hide语句。最后Ren’Py将主控流程切换到目标语句。
关于传送功能,有几条重要事项需要说明。第一条是,传送时只能检查单一路径,这意味着这条路径是实际执行路径之一,在其他路径上可能还是存在bug。总体来说,这条路径不考虑游戏逻辑,所以它也可能是一条实际上并不存在的路径。(对于重流程的游戏,这的确是个大问题,特别是包含大量Python语句的情况。)
然而,最大的问题是,在传送的目标语句前的Python语句不会执行。这表示所有变量都是未经初始化的,使用时可能直接让程序挂掉。为了防止这个问题,创作者可以定义一个脚本标签(label) after_warp ,写一些只有传送后才会执行的语句。这个脚本标签可以在程序中配置变量,并在预览中返回。