QuickMenu(快捷菜单)的制作

2022/5/8

本节文档介绍如何制作 QuickMenu ,通过本节文档,你应当能够掌握 textbuttonimagebutton 的用法

官方文档

文本按钮:https://www.renpy.cn/doc/screens.html?highlight=textbutton#textbutton

图片按钮:https://www.renpy.cn/doc/screens.html?highlight=imagebutton#imagebutton

# 需求描述

Ren'Py 自带的 QuickMenu 的文本按钮很不好看,点击的反馈感不好,需要替换成图片按钮

所谓 QuickMenu ,指的是这一部分(图片中青色框出部分)

需求描述

# 修改代码

# 默认实现

我们首先来看 Ren'Py 的默认实现

# 参考 ver1.0 screen.rpy 345-354行
# 只截取 textbutton 部分
            # 旧 quick_menu 之 textbutton
            textbutton _("回退") action Rollback()
            textbutton _("历史") action ShowMenu('history')
            textbutton _("快进") action Skip() alternate Skip(fast=True, confirm=True)
            textbutton _("自动") action Preference("auto-forward", "toggle")
            textbutton _("保存") action ShowMenu("game_save")
            textbutton _("读取") action ShowMenu("game_load")
            textbutton _("快存") action QuickSave()
            textbutton _("快读") action QuickLoad()
            textbutton _("设置") action ShowMenu('preferences')
1
2
3
4
5
6
7
8
9
10
11
12

使用 textbutton 的好处是非常简单,不需要让美工做图标,不过缺点是不好看,所以商业化的 Galgame 基本上都没有用文本做按钮的

# textbutton 的使用方法

# textbutton _("显示的名称") action 点击后要执行的操作
# _("")前面的“_”表示括号里面的东西可以被翻译,实际做的话不考虑国际化的话可以不加
textbutton _("设置") action ShowMenu('preferences')
# action 可以执行的操作很多,目前在这里我们只要对照中文和后面的英文大概了解即可
# 里面需要关注 ShowMenu('preferences') 这个 action
# ShowMenu('preferences') 中 '' 里面的要跳转的页面的名称,这里具体后面讲写页面的时候再讲
# 现在只需要知道 ShowMenu('preferences') 会跳转到下面的位置(ver1.0 screen.rpy 的1431行)即可
screen preferences(): # preferences 是这个 screen 的名字,上面 ShowMenu 里面填的就是这里的名字
1
2
3
4
5
6
7
8

# 修改成图片按钮

来看代码

# 参考 ver1.0 screen.rpy 345-354行
# 只截取 imagebutton 部分
# 这里只截取存档和快进来说明,快进和自动是一类,其余是一类,内容相仿,为防止篇幅过长这里只放两个
            # 存档
            imagebutton: # 声明是一个图片做的按钮
            # 注意缩进(一个 Tab 或者四个空格)
                idle "gui/quick_menu/btn_save_base.png" # idle 鼠标不在按钮上的样式
                hover "gui/quick_menu/btn_save_onMouse.png" # hover 鼠标放在按钮上的样式
                selected_hover "gui/quick_menu/btn_save_onClick.png" # selected_hover 鼠标点击时的样式
                hover_sound "voice/effect/マウス乗せ音.ogg" # hover_sound 鼠标放在按钮上的音效
                activate_sound "voice/effect/メニュー決定音.ogg" # activate_sound 鼠标点击时的音效
                action ShowMenu("game_save") # 执行的 action

            # 快进
            ## 快进和自动属于要保存状态的按钮,多一个 selected_idle 特性
            imagebutton:
                idle "gui/quick_menu/btn_skip_base.png"
                hover "gui/quick_menu/btn_skip_onMouse.png"
                selected_hover "gui/quick_menu/btn_skip_onClick.png"
                selected_idle "gui/quick_menu/btn_skip_Clicked.png" # 快进是一个持续的状态(启用时一直高亮) selected_idle 表示点击后持续展示这个图标
                hover_sound "voice/effect/マウス乗せ音.ogg"
                activate_sound "voice/effect/メニュー決定音.ogg"
                action Skip() alternate Skip(fast=True, confirm=True) # 照抄前面 textbutton 的 action
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

这样,我们就完成了 QuickMenu 的改造