找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 158|回复: 3

[教程] “如何在条bar的滑块上增加数字变量”的解决方法

[复制链接]
发表于 2024-6-28 13:27:06 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 烈林凤 于 2024-6-28 21:35 编辑

我本来想着今天就把“renpy进阶学习经验五”写出来的,但今天在技术群里帮一位群友解决了一个问题,我觉得这个问题非常有实用性,具有很高的参考价值,因此特别写一篇教程。

感谢@云 提供的问题以及拓展问题的解决方法,感谢@blackpineapple 提供的拓展问题的解决方法!感谢其他群友给出的想法!教程中均为我独自思考的过程

关于“如何在条bar的滑块上增加数字”的解决方法其实很简单,先写一个普通版的bar
[RenPy] 纯文本查看 复制代码
        bar:
            xycenter(0.5,0.9)
            xysize(1000,30)
            value VariableValue("im_mo_xpos",range=1.0)
            bar_invert False
            bar_vertical False

这里使用了一个VariableValue行为,参考文档界面行为(action)、值(value)和函数 — Ren'Py 中文文档 (renpy.cn)
此时如果我们想要在bar上增加滑块,那就需要增加一个thumb:
[RenPy] 纯文本查看 复制代码
thumb "#FFFFFF"


这样我们就有了一个白色的滑块,此时需要在滑块上增加数字变量,那就需要使用到Text(),参考文档文本 — Ren'Py 中文文档 (renpy.cn)
[RenPy] 纯文本查看 复制代码
thumb Text("[im_mo_xpos]")


然后,现在问题出现了,如果使用了Text(),那会导致背景无法放置在上面,因为thumb后面无法接受两个图片参数,那我们此时就需要用到用到一个方法可以将多个图片放进去——使用Fixed,参考文档可视组件 — Ren'Py 中文文档 (renpy.cn)
[RenPy] 纯文本查看 复制代码
thumb Fixed("#000000ff"Text("[im_mo_xpos]"))


注意先后顺序,写在后面的会显示在上面,位置错位会导致文字无法显示
整体效果
[RenPy] 纯文本查看 复制代码
        bar:
            xycenter(0.5,0.9)
            xysize(1000,30)
            value VariableValue("im_mo_xpos",range=1.0)
            thumb Fixed("#000000ff"Text("[im_mo_xpos]"))
            bar_invert False
            bar_vertical False


注意,我所使用的是一个名为“im_mo_xpos”的浮点数变量,你可以将这个变量定义成任意变量,但请确保他是已经被定义过并且确实是可以由bar来控制的

拓展芝士:
“如何将环境变量的‘音量’放置在滑块上”的解决方法
这个方法主要从黑凤梨大大曾经的一篇帖子中获知——【2023暑假界面】第三周 (设置界面) - 经验教程 - RenPy中文空间
在这篇帖子中,她使用了一个名为“_preferences.get_volume()”的方法,但我在文档中并没有找到这个方法,于是我猜测,这可能是一个已经被弃用的方法,于是我开始在文档中寻找起来,终于找到了这两个——
环境设定配置 — Ren'Py 中文文档 (renpy.cn)

音频 — Ren'Py 中文文档 (renpy.cn)

即使用“preferences.get_mixer()”方法,这两种方法效果一样,因此请使用preferences.get_mixer()方法
而preferences.get_mixer()方法的使用方法是——preferences.get_mixer(“mixer”)
这个mixer指的是混音器,而常用的三种混音器的代指分别是:
(音效)audio、sound——sfx
(音乐)music——music
(语音)voice——voice
而所有音轨共同的混音器是——main(总音量)
用不同的混音器可以显示不同的音量,比如说如果想要显示音乐具体音量就这么写:
[RenPy] 纯文本查看 复制代码
thumb Fixed("#000000ff",Text("[preferences.get_mixer('music')]"))


当然,如果这么写,显示出来的是浮点数,并且非常长,我们需要将其转化为整值并加上百分比符号来表示音乐音量百分比
[RenPy] 纯文本查看 复制代码
thumb Fixed("#000000ff",Text(str(int(preferences.get_mixer('music')*100))+"%"))


将数值乘100并转换为整值后转化为字符串,最后加上百分比,就大功告成了!
可是!这样的做法完全是在画蛇添足!
如果你并没有给音量设置最小值或是想要显示具体数值,那么完全没必要使用这个方法,你可以将bar的变量的最大值设置成100,然后用Text()显示变量时在最后加上一个百分比符号,这样显示出来的效果与上述方法制作出来的是一模一样的!
这样能为你节约不少的时间,没必要在这里浪费太多功夫(雕花技术max)

我们在下一篇帖子中再见!

评分

参与人数 3活力 +600 干货 +5 收起 理由
被诅咒的章鱼 + 300 + 1 感谢分享!
blackpineapple + 300 + 3 新的雕花技术
ZYKsslm + 1 鼓励原创!

查看全部评分

发表于 2024-6-28 13:30:38 | 显示全部楼层
牛逼,滑块上加是挺实用的,UI排版难度降低了好多
回复 支持 抱歉

使用道具 举报

发表于 2024-6-28 13:32:01 来自手机 | 显示全部楼层
好厉害ヾ ^_^♪我的烈烈🤤🤤🤤

点评

好好好  发表于 2024-6-28 13:46
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-7-19 17:32 , Processed in 0.129384 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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