RenPy中文空间

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 616|回复: 0

[旧版文档] 高级GUI自定义

 关闭 [复制链接]
发表于 2017-10-26 19:45:14 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 BuErShen 于 2018-9-17 08:08 编辑

高级GUI自定义
注意
此处为旧版文档,不再更新。

查阅最新Ren’Py简体中文文档,请到下面网址(同步官方)
https://www.renpy.cn/doc/index.html




通过自定义 screens.rpy 可以进行更高级的定制,包括完全删除它,并将其替换为自己的代码。 下面是几个开始的地方。

样式(Styles)
样式 and 样式属性 是否可显示以及其显示方式。 想要找出正在使用的可显示样式,将鼠标放在其上并键入shift + I即可。 这样就可以调用样式检查器,其中显示样式的名称。 一旦知道了样式名称,就可以使用样式语句调用该样式来进行自定义操作。
    例如,假设我们忘记了编写GUI文档,并希望在对话文本中添加一个明亮的红色轮廓。 我们就可以将鼠标悬停在文本处,并按shift + I,便可以找出所使用的样式名称是say_dialogue。 然后我们可以添加style语句(到screens.rpy的结尾,或者在options.rpy中的某处):
[RenPy] 纯文本查看 复制代码
style say_dialogue:
        outlines [ (1, "#f00", 0, 0 ) ]

使用样式语句可以进行大量的自定义操作。

屏幕(Screens) - 导航
下一级的定制是修改屏幕。 关于屏幕的最重要的文档位于 屏幕和屏幕语言和  屏幕操作,值和功能 部分。
  
最重要的屏幕之一是导航屏幕,它同时用作主菜单,并为游戏菜单提供导航。 可以编辑此屏幕以向其中一个或两个添加更多按钮。
例如,将导航画面更改为:
[RenPy] 纯文本查看 复制代码
screen navigation():
        vbox:
                style_prefix "navigation"
                xpos gui.navigation_xpos
                yalign 0.5
                spacing gui.navigation_spacing
                if main_menu:
                        textbutton _("Start") action Start()
                        textbutton _("Prologue") action Start("prologue")
                else:
                        textbutton _("Codex") action ShowMenu("codex")
                        textbutton _("History") action ShowMenu("history")
                        textbutton _("Save") action ShowMenu("save")
                textbutton _("Load") action ShowMenu("load")
                textbutton _("Preferences") action ShowMenu("preferences")
                if _in_replay:
                        textbutton _("End Replay") action EndReplay(confirm=True)
                elif not main_menu:
                        textbutton _("Main Menu") action MainMenu()
                textbutton _("About") action ShowMenu("about")
                textbutton _("Extras") action ShowMenu("extras")
                if renpy.variant("pc"):
                        textbutton _("Help") action ShowMenu("help")
                        textbutton _("Quit") action Quit(confirm=not main_menu)

我们从主菜单添加了一个序幕屏幕,从游戏菜单中分出次级屏幕,以及两个菜单的附加屏幕。

屏幕(Screens)- 游戏菜单  
也可以创建自定义游戏菜单屏幕。 这些屏幕可以使用 game_menu 屏幕来提供标题和可滚动视口。 最小的自定义游戏菜单屏幕是:
[RenPy] 纯文本查看 复制代码
screen codex():
        tag menu
        use game_menu(_("Codex"), scroll="viewport"):
                style_prefix "codex"
                has vbox:
                        spacing 20
                text _("{b}Mechanical Engineering:{/b} Where we learn to build things like missiles and bombs.")
                text _("{b}Civil Engineering:{/b} Where we learn to build targets.")

显然,需要有更多功能的代码会比这更复杂一些。

注意“tag menu”行。 这一行很重要,因为当它显示代码时隐藏了其他菜单界面。 没有它,将很难切换到其他菜单界面。

屏幕(Screens) - 点击继续
我们通常希望添加的屏幕是点击继续屏幕,其显示了文本结束时的显示屏幕。

下面是一个简单的例子:
[RenPy] 纯文本查看 复制代码
screen ctc():
        frame:
                at ctc_appear
                xalign .99
                yalign .99
                text _("(click to continue)"):
                        size 18
transform ctc_appear:
        alpha 0.0
        pause 5.0
        linear 0.5 alpha 1.0

这个特定的CTC屏幕使用变换在5秒后显示帧。 延迟CTC动画几秒钟是一个好主意,可以让Ren'Py有足够的时间来预测和加载图像。

GUI的整体更换
高级游戏制作者是可以取代一些或全部的 screens.rpy 。 当这样做时,gui.rpy 中的部分或全部代码可能会变得冗余。 调用gui.init() 来重置样式是一个很好的选择,之后创建者便可以做任何他们想要的更改。
通常最好要包括一些或全部的 特殊屏幕(special screens) ,以确保玩家可以访问Ren'Py提供的所有功能。

Python 函数
有一些支持GUI代码的Python函数。

gui.button_properties(kind)
给定一个按钮的类型,然后会返回一个字典以确定该按钮的标准样式属性。 参数设置方式如下
  
background
如下所述

padding
选用 gui.kind_borders.padding(如果存在)

xsize
选用 gui.kind_width (如果存在)

ysize
选用 gui.kind_height(如果存在)

(注意,如果类型字符串是“nvl_button”的话,将会查找 gui.nvl_button_background 变量。)
  
  背景是从如下现有的第一个图片中获取的背景图片:
  
  • gui/button/kind_[prefix_].background.png
  • gui/button/[prefix_].background.png
  
如果存在名为 gui.kind_borders 的 gui 变量,则使用它。 否则使用 gui.button_borders 。 如果 gui.kind_tile    exists 存在,它会确定边框是否平铺,否则将由 gui.button_tile 来控制是否平铺。
  
想要了解[prefix_]的含义,请查看 样式前缀搜索(style prefix search) 文档。

gui.button_text_properties(kind=None, accent=False)
给定一个按钮的类型,然后会返回一个字典以确定该按钮的标准样式属性。 参数设置方式如下:

font
选用 gui.kind_text_font (如果存在的话)。

size
选用 gui.kind_text_size (如果存在的话)。

xalign
选用 gui.kind_text_xalign (如果存在的话)。

text_align
选用 gui.kind_text_xalign (如果存在的话)。

layout
如果gui.kind_text_xalign的值大于0且小于1,则设为“subtitle”。  

还有一些变量设置文本 颜色(color) 样式属性:

color

如果存在的话则选用 gui.kind_text_color。 如果变量未设置,并且 accent 的值为 True,则将文本颜色设置为默认颜色。

insensitive_color

选用 gui.kind_text_insensitive_color (如果存在的话)

idle_color

选用 gui.kind_text_idle_color (如果存在的话)

hover_color

选用 gui.kind_text_hover_color (如果存在的话)

selected_color

选用 gui.kind_text_selected_color (如果存在的话)  

所有其他的 文本样式属性(text style properties) 也可用。 例如,gui.kind_text_outlines 设置轮廓样式属性,gui.kind_text_kerning设置字距调整等。

gui.init
(width, height)
初始化GUI

width

默认窗口的宽度。

height

默认窗口的高度。

gui.text_properties
(kind=None, accent=False)
给定一个按钮的类型,然后会返回一个字典以确定该按钮的标准样式属性。 参数设置方式如下:

font
选用 gui.kind_text_font (如果存在的话)

size
选用 gui.kind_text_size (如果存在的话)

xalign
选用 gui.kind_text_xalign (如果存在的话)

text_align
选用 gui.kind_text_xalign (如果存在的话)

layout
如果gui.kind_text_xalign大于零而小于1,则为“subtitle”。

还有一些变量用来设置文本的 颜色(color) 样式属性:

color

如果存在的话则选用gui.kind_text_color。 如果变量未设置,并且accent的值为True,则将文本颜色设置为默认颜色。

insensitive_color
选用 gui.kind_text_insensitive_color, (如果存在的话)

idle_color
选用 gui.kind_text_idle_color, (如果存在的话)

hover_color
选用 gui.kind_text_hover_color, (如果存在的话)

selected_color
选用 gui.kind_text_selected_color, (如果存在的话)

所有其他的 text style properties (文本样式属性) 也可用。 例如,gui.kind_text_outlines设置轮廓样式属性,gui.kind_text_kerning设置字距调整等。

不兼容的GUI更改随着GUI的更新,偶尔有一些变量会改变名字。 这些更改只有在GUI重新生成时才会生效 - 直到那时,游戏才会在新的Ren'Py中继续使用旧的变量名。

6.99.12.3
  • gui.default_font -> gui.text_font
  • gui.name_font -> gui.name_text_font
  • gui.interface_font -> gui.interface_text_font
  • gui.text_xpos -> gui.dialogue_xpos
  • gui.text_ypos -> gui.dialogue_ypos
  • gui.text_width -> gui.dialogue_width
  • gui.text_xalign -> gui.dialogue_text_xalign

—————————————————————————— 尾线 ——————————————————————————

--------------------------
有任何意见与反馈
欢迎在 此处 交流
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2018-12-19 07:02 , Processed in 0.028162 second(s), 21 queries , File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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