找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11489|回复: 3

[转载] Ren'Py引擎从入门到放弃(支线1)——自定义开场画面

[复制链接]
发表于 2019-4-25 18:04:00 | 显示全部楼层 |阅读模式

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

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

×
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] 纯文本查看 复制代码
# 开场画面

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] 纯文本查看 复制代码
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] 纯文本查看 复制代码
# 开场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] 纯文本查看 复制代码
$ 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] 纯文本查看 复制代码
# 主菜单之前

label before_main_menu:

    $ renpy.movie_cutscene("opening.webm")

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

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

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

资源部分

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

链接:https://pan.baidu.com/s/11I2TgqHnxNzu4IaE7vGSWQ
提取码:1e3g

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

预告部分:自定义开场还有小部分内容,需要界面(screen)相关知识点,先鸽着…



“Ren'Py引擎从入门到放弃”系列教程
发表于 2019-11-16 15:06:37 | 显示全部楼层
所以,怎么解决跳过main menu呢?
回复 支持 1 抱歉 0

使用道具 举报

发表于 2019-9-30 17:46:01 | 显示全部楼层
这个教程真跳跃 估计难能看得懂!
回复 支持 抱歉

使用道具 举报

发表于 2020-2-14 09:42:33 | 显示全部楼层
学习了,很不错!
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-21 23:52 , Processed in 0.127763 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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