Renpy学习:自定义开场画面
学习来源
脚本标签 label
特殊 label 标签
脚本标签 label 可以用在任何 rpy 脚本文件中,可以理解为某一段脚本的索引
新建工程会生成一个 start 的 label,在主菜单点击启动或开始后,就会从 start 开始顺序执行脚本
可用标签
这个场景下可以使用的标签有三个
- splashscreen
- before_main_menu
- main_menu
在开头先把文本标签写上
1 | # 开场画面 |
在 script.rpy 中添加这些文本标签后会发现,开头的主菜单(main menu)被跳过了
在主菜单前显示一个 logo
将需要显示的 logo 图片放在工程目录中的 images 子目录下,
然后重命名为 logo.png(文件名不能用中文),
修改 splashscreen 标签
1 | label splashscreen: |
show 语句带两个分句来调整位置和使用转场(transition)
pause 语句暂停整个画面 1 秒
hide 语句使用转场(transition)让 logo 消失
logo 背景色
如上方法显示 logo,背景是黑色的
如果需要白色或者其他图片作为背景的话,先定义图像(image),
使用 scene 和 show 语句顺序显示就可以了
1 | # 开场logo |
这里使用了两个图像(image),采用的是 RGB 纯色
也可以使用图片文件替换
如果需要展示多个 logo,可以按顺序使用 show 和 hide 语句
logo 不可点击跳过
使用 renpy.pause 函数可以做到…
在每一个不想被跳过的 sence,show,hide 语句后面都加上一句
1 | $ renpy.pause(1, hard=True) |
$表示后面是一个 python 函数,
入参数字 1 表示持续时间为 1 秒,
hard=True 表示鼠标点击不能打断暂停
官方对 hard=True 的使用建议是:Use this sparingly, as it’s hard to distinguish a hard pause from a crashing game(谨慎使用,因为很难区分硬性暂停和程序卡死)。
在开头播放视频
假设要播放的视频文件为“opening.webm”,将它放入另一个特殊脚本标签中:
1 | label before_main_menu: |
使用 before_main_menu 可以将视频做成主菜单的背景循环播放
有一个缺点,renpy 的编码格式比较有限
自定义一个“点击开始”的界面
在显示完 logo 和开场动画之后,很多游戏会出现一个特殊画面,画面显示“点击 xxx 键开始”
用户使用鼠标或者其他设备点击之后,可能会出现主菜单,也可能会进入某个序章剧情
思路
- 自定义一个界面,完成显示和菜单功能
- 修改原来的 main_menu 界面
这里选用前者,原因是——修改别人的代码比较烦人……
自定义一个界面(screen)
1 | #自定义界面(screen) |
习惯上,一般都会将界面(screen)放在 screens.rpy 中,或者新建一个 rpy 文件专门写自定义界面
接着是在界面上添加图像(image)
这里要添加的图片有两个: “点击继续”和“背景图”
当然,点击继续也可以使用文字
先在工程目录的 images 里新建一个子目录 menu
放入两张图片,background.png 和 press_to_start.png
自定义界面:
1 | screen press_to_start(): |
显示自定义界面
在 scripts.rpy 中使用 before_main_menu
1 | # scripts.rpy |
效果:
让“点击开始”闪烁起来
使用变换(transform)
1 | # 自定义的图片闪烁变换 |
点击继续按钮的功能
为了实现继续的功能,需要进入一个全屏的热点(hotspot):
1 | screen press_to_start(): |
为了偷懒,最后使用了 Return()函数回到了主控流程,也就是自动引入 main_menu 界面
如果想在这个画面中直接显示定义菜单的话,可以隐藏点击继续的图片并显示菜单
也可以用 call 函数调用一个完整的自定义菜单界面
最后再加一个点击开始界面等待一段时间后播放一段视频,或者其他画面的方法
比如,我们想再 press_to_start 界面 30 秒没有点击的情况下播放一段视频,再回到 press_to_start 界面
可以这样处理:
1 | # scripts.rpy |