Ren‘Py引擎从入门到放弃(支线1)——自定义开场画面

世上无难事,只要肯放弃。

支线系列是独立于基础之外的内容,会使用一些犄角旮旯的知识点,感觉有困难的同学可以暂时不(fang)看(qi)。

本篇内容将涉及脚本标签(label)、图片的显示与隐藏、视频播放和renpy函数等。请善用官方文档的搜索功能,能解决大部分疑问。

第一个问题:默认的主菜单(main menu)太丑了,能不能换?怎么换?

答:当然可以换。那部分内容预计在后续的自定义GUI部分细说。

第二个问题:想要在主菜单(main menu)之前播放几个LOGO,该怎么弄?

答:启动开场不放LOGO,就跟去星巴克买咖啡不自拍不发朋友圈一样!咳咳,总体来说是个简单的事情。

首先简要介绍脚本标签(label)。label可以用在任何rpy脚本文件中,可以理解为某一段脚本的索引。新建工程会根据模板生成一个名叫“start”的label。主菜单(main menu)点击“启动”或“开始”后,就会从“start”开始顺序执行脚本内容。所以,我们现在需要做的,就是在start脚本标签之前搞点事情~

Ren'Py中自带了几个默认的文本标签,是在主菜单(main menu)界面之前执行的。

详情可参考如下链接:Labels & Control Flow — Ren'Py Documentation

或者中文版:脚本标签(label)和主控流程 — Ren'Py 中文文档

此处可用的特殊文本标签有3个:splashscreen、before_main_menu和main_menu。这3个文本标签在新建工程生成的脚本中并不存在(screen.rpy中的main_menu是screen名,不是label名,请勿混淆)。

我们可以在工程自动生成的任意一个rpy文件中添加这些文本标签,或者可以自己新建一个rpy文件并添加这些文本标签。

甚至我们可以修改 renpy-7.1.3-sdk\launcher\game\tl\simplified_chinese\script.rpym 文件,以后新建工程中就带有这些文本标签。为了方便起见,这次我都在加在了 script.rpy 文件中。

开头先写把文本标签写上:

[RenPy] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
# 开场画面
 
label splashscreen:
 
    pass
 
# 主菜单之前
 
label before_main_menu:
 
    pass
 
# 主菜单
 
label main_menu:
 
    pass


pass语句是用来占位,不会做任何事。在 script.rpy 文件中添加这些文本标签后,启动工程就会发现,开头的主菜单(main menu)被跳过了,直接进入了 “start”标签中。这个问题我们后续再处理。

继续logo显示……把需要显示的logo图片放入工程目录中的images子目录,然后重命名为“logo.png”或者“logo.jpg”(注意文件名不能使用中文)。修改“splashscreen”脚本标签:

[RenPy] 纯文本查看 复制代码
?
1
2
3
4
5
label splashscreen:
 
    show logo at truecenter with Dissolve(2.0)
    pause 1.0
    hide logo with Dissolve(2.0)


这里使用的show语句带两个分句来调整位置和使用转场(transition),pause语句暂停整个画面1秒,hide语句使用转场(transition)让logo消失。脚本的语法是个学习Ren'Py过程中必然面临的困难,没有什么捷径。我在后续的内容中可能会展开一些官方文档中没有的用法,基础知识还请自行翻阅官方文档。此处不再展开。

这样简单粗暴显示logo的话,背景默认是黑色。如果需要白色或者其他图片作为背景的话,先定义图像(image),使用scene和show语句顺序显示就可以。例如:

[RenPy] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
# 开场LOGO
image pure_black = "#000"
image pure_white =  "#ffffff"
 
label splashscreen:
 
    scene pure_black
    show pure_white with Dissolve(2.0)
    show logo at truecenter with Dissolve(2.0)
    pause 1.0
    hide logo with Dissolve(2.0)


这里定义了两个图像(image),采用的是RGB纯色(solid)。也可以使用图片文件替换。具体的方法请参考文中中显示图像(Displaying Images)的部分。

如果需要展示多个logo,就按顺序使用show和hide语句。

第三个问题:按照上面的办法显示的logo,鼠标一点就直接跳过了,有没有办法让logo不能跳过?

答:不能跳过logo的都是坏文明,粉砕する!

办法的确是有的……使用 renpy.pause 函数。

在每一个不想被跳过的scene、show和hide语句后面,都加上一句:

[RenPy] 纯文本查看 复制代码
?
1
$ renpy.pause(1, hard=True)


开头的刀乐符号($)表示后面是一个python函数,入参的数字1表示持续(event)的时间为1秒,hard为True表示鼠标点击不能打断暂停。官方文档对hard赋值为True用法的建议是——Use this sparingly, as it's hard to distinguish a hard pause from a crashing game (谨慎使用,因为很难区分硬性暂停和程序卡死)。

第四个问题:如果想要在开头播放视频的话呢?

答:播放视频的脚本和语法很简单。假设我们需要播放的视频文件名为“opening.webm”,换另一个特殊的脚本标签中:

[RenPy] 纯文本查看 复制代码
?
1
2
3
4
5
# 主菜单之前
 
label before_main_menu:
 
    $ renpy.movie_cutscene("opening.webm")


选用 before_main_menu 可以将视频做成主菜单(main menu)的背景循环播放(这里没有演示)。麻烦的地方在于Ren'Py支持的编码格式很有限……具体支持的编码列表请参考官方文档:Movie — Ren'Py Documentation

或者中文文档:影片 — Ren'Py 中文文档

遇到视频不能播放的情况,可以尝试用视频软件重新编码(比如MediaCoder),并调整输出帧率是24fps。

资源部分

整个工程的下载链接(有些人就在等这个是不是?)

链接:百度网盘-链接不存在
提取码:1e3g

创建的SDK版本为7.1.3,一般来说这部分功能在各个版本都没有兼容性问题,解压到自己的工程目录下就行。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值