GUI自定义
本页属于 GenPy Ren'Py 学习路线。教程内容面向 Ren'Py 8.x,并在页面末尾连接到 GenPy 的对应工作流。
学习目标
- 了解“GUI自定义”在 Ren'Py 项目中的用途。
- 能在一个最小项目里验证本章相关语法或工作流。
- 知道发布前需要检查的常见风险,并能在 GenPy 中继续维护。
核心语法
gui.rpyscreens.rpygui.*define guidefault gui
可运行示例
text
## 强调色 / 交互色
define gui.accent_color = '#000060' # 强调色(标题、选中)
define gui.idle_color = '#606060' # 普通态文字
define gui.hover_color = '#3284d6' # 悬停态文字
define gui.selected_color = '#555555' # 选中态文字
define gui.insensitive_color = '#8888887f' # 不可用态
## 正文与对话
define gui.text_color = '#402000' # 正文/对话文字色
define gui.interface_text_color = '#404040' # 界面文字色教程正文
Ren'Py 新项目自带一套完整 GUI(主菜单、对话框、存档/读档、设置等)。大多数外观改动只需修改 game/gui.rpy 里的 gui.* 变量,无需直接动样式或屏幕。深度定制再去改 screens.rpy。
1. 改动流程总览
- 配色/字体/字号 → 改
gui.rpy的gui.*变量。 - 图片素材(按钮、边框、背景) → 替换
game/gui/下对应 PNG。 - 布局/结构 → 改
screens.rpy中的 screen(见第 16 章)。 - 改完
gui.rpy建议完全重启游戏查看效果。
2. 分辨率与重新生成 GUI
- 分辨率在
gui.rpy顶部:gui.init(1280, 720)。 - 想换分辨率/重置主题,用启动器的 “Change/Update GUI”(会按当前分辨率重新生成 gui 素材)。
- 注意:重新生成会覆盖部分
gui/图片与gui.rpy,先备份自定义改动。
3. 配色(颜色变量)
text
## 强调色 / 交互色
define gui.accent_color = '#000060' # 强调色(标题、选中)
define gui.idle_color = '#606060' # 普通态文字
define gui.hover_color = '#3284d6' # 悬停态文字
define gui.selected_color = '#555555' # 选中态文字
define gui.insensitive_color = '#8888887f' # 不可用态
## 正文与对话
define gui.text_color = '#402000' # 正文/对话文字色
define gui.interface_text_color = '#404040' # 界面文字色4. 字体与字号(中文必改)
text
## 字体(务必换成含 CJK 字形的字体,否则中文不显示)
define gui.text_font = "fonts/SourceHanSansSC-Regular.otf" # 对话/正文
define gui.name_text_font = "fonts/SourceHanSansSC-Bold.otf" # 角色名
define gui.interface_text_font = "fonts/SourceHanSansSC-Regular.otf" # 菜单/按钮
## 字号
define gui.text_size = 33 # 对话文字
define gui.name_text_size = 45 # 角色名
define gui.interface_text_size = 36 # 界面文字
define gui.label_text_size = 36
define gui.notify_text_size = 24
define gui.title_text_size = 75 # 主菜单标题中文显示要点:把上面所有字体变量指向同一个思源黑体/思源宋体之类的 CJK 字体, 字体文件放
game/fonts/。这是中文项目最常见的第一步。
5. 对话框(textbox)
text
define gui.textbox_height = 278 # 对话框高度
define gui.textbox_yalign = 1.0 # 贴底
define gui.name_xpos = 360 # 角色名水平位置
define gui.dialogue_xpos = 402 # 对话文字位置
define gui.dialogue_width = 1116替换 game/gui/textbox.png 可改对话框背景图。
6. 按钮(main_menu / choice / 普通按钮)
text
## 选择按钮(menu 选项)
define gui.choice_button_text_idle_color = '#888888'
define gui.choice_button_text_hover_color = '#0066cc'
## 通用按钮文字
define gui.button_text_idle_color = gui.idle_color
define gui.button_text_hover_color = gui.hover_color
define gui.button_text_selected_color = gui.accent_color按钮底图在 game/gui/button/ 下(idle/hover 等 PNG 或 Frame 切片图)。
7. 主菜单与游戏菜单背景
text
define gui.main_menu_background = "gui/main_menu.png"
define gui.game_menu_background = "gui/game_menu.png"主菜单按钮位置/结构在 screens.rpy 的 screen main_menu() 和 navigation()。
8. 存档界面缩略图等
text
define config.thumbnail_width = 256
define config.thumbnail_height = 144
define gui.slot_button_text_size = 22
define gui.file_slot_cols = 3 # 存档槽列数
define gui.file_slot_rows = 29. 快捷菜单(quick menu)与通知
- 底部快捷条
quick_menu(回退/自动/存档/设置)在screens.rpy,可隐藏或改样式。 - 通知文字(
renpy.notify)样式由gui.notify_*控制。
10. 变体(手机/不同尺寸)
gui.rpy 支持按变体覆盖(如 variant "small" 给小屏更大的字号),自动适配桌面/移动端。
text
init python:
if renpy.variant("small"): # 小屏/手机
gui.text_size = 30
gui.interface_text_size = 45常见坑
- 中文不显示 = 没把
gui.*_font全换成 CJK 字体;这是头号坑。 - 改
gui.rpy后请完整重启游戏,热重载有时不刷新 GUI。 - 用启动器“重新生成 GUI”前务必备份,会覆盖自定义文件。
- 想改“结构/位置”要去
screens.rpy,gui.*只管“数值/外观参数”。
官方参考
- GUI 自定义指南:https://www.renpy.org/doc/html/gui.html
- GUI 高级:https://www.renpy.org/doc/html/gui_advanced.html
在 GenPy 里怎么做
- 在 GenPy 的代码模式中维护相关 .rpy 文件,先保持语法清晰,再逐步加入本章功能。
- 用故事图谱、变量、校验或演出编辑器把“能运行”提升到“可维护”。
- 导出前结合 Ren'Py Lint 和 GenPy 校验结果,确认脚本、素材和发布路径一致。
推荐继续阅读:
