【杂文】renpy漫游记
程序工作基本告一段落了。后续如果有新的折磨再补充(希望不要再有了TAT)。
1.【隐藏对话框】
在剧本文件中可以直接用指令 window hide
隐藏。
如果要做“隐藏”按钮,需要 action 。由于 00keymap.rpy
文件中内置有 label _hide_windows
,直接写 action Call("_hide_windows")
即可。
2.【在设置页面创建一个bar调整对话框透明度】
搞了一整个晚上,遇到诸如“条的 value
不能是实数”,“变量修改后如果换个界面莫名其妙回到默认”,“对话框所属 window
组件的特性”等等一大堆问题,因为尝试了各种各样的方法,所以还有别的许多……让人掉头发的东西……
最后在社区找到了这个:Changing the opacity of the Dialogue box with a Slider
这篇帖子里又出现这个:how do I change the opacity of the dialogue box in Ren’Py
最终终于是解决了问题。
首先,在 screen say
的 window
组件里添加对话框背景图片时用这句话:
window:
id "window"
background Transform(Image("gui/ui_dialogue/ui_dialogue_box.png",xalign=0.5, yalign=1.0), alpha=persistent.windowalpha) #加这句
if who is not None:
window:
id "namebox"
style "namebox"
text who id "who"
注意一下,这句大有来头。
首先是必须放在这个位置(即 window
组件内的最上面。免得将后面的文字和名字框覆盖),这个很显然。
其二:必须在这里写 Transform()
函数,如果在 screen
外面用 transform xxx:
语句定义一个变换的话,那么就是定死了无法再改变。
其三:Transform()
函数里那个 persistent.windowalpha
变量定义在 screen say
外面,要求这样子写:
define persistent.windowalpha=0.5 #0.5是设置的初始值,改成1.0也可
实测用 default my.windowalpha
会寄……奶奶滴……还是老老实实用 define
和 persistent
吧(虽然我并不清楚原理)
然后,后面 bar
这样写(注意 style="xxx"
不能省):
bar value FieldValue(persistent,"windowalpha",range=1.0,style="slider")
我的 style
长这样:
screen preferences(title="textpage",pre_title="none"):
...
vbox:
ypos 410
style_prefix "mysliderh"
yalign 0.0
spacing 52
bar value Preference("text speed")#文本显示速度
bar value ...#文本显示速度...
bar value FieldValue(persistent,"windowalpha",range=1.0,style="slider")#对话框透明度
style mysliderh_slider:
xpos 969
xsize 676
thumb_offset 34#这个很重要
left_gutter 34#这个也很重要
right_gutter 34#这个也很重要
base_bar "gui/ui_setting/ui_setting_slider_h.png"
thumb "gui/ui_setting/ui_setting_thumb_h.png"
3.【主界面BGM/粒子效果】
因为一些我不懂的奇怪问题,直接在 screen main_menu():
里播放BGM的话,会放两次(如果在这里加粒子效果,也会有两次),而且进入设置页面后再回来会重播……所以还是去 00start.rpy
里修改吧。引擎内置有 BGM 播放的代码,照着抄一份粒子的就可以了。