-
Notifications
You must be signed in to change notification settings - Fork 0
dialogbox_sprite_CN
windows99-hue edited this page Jul 14, 2026
·
2 revisions
在v2.3.0之后的版本中,dokibox的dialogbox带有了渲染立绘功能!
立绘功能的API如下
sayori = dokibox.Avatar(name="Sayori", emotes={
"normal":["images\\sayori\\1l.png",
"images\\sayori\\1r.png",
"images\\sayori\\a.png"]
})dokibox.Avatar类会初始化一个角色立绘,详情可见仓库内avatar_test.py
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
name |
str | "" |
dialogbox的nametag所显示的内容 |
emotes |
dict | "" |
emotes参数接收一个字典,其中字典键为表情名称,字典值应为一个列表,你可以在其中放置任意数量的立绘图片,他们可以是字符串类型的图片路径,也可以是bytes字节串,dokibox会将传入的所有照片一同合并为一个整体,并参与到接下来的渲染中 |
一个普通的带立绘dialogbox调用办法如下
dokibox.dialogbox("哇,这里的风景也太舒服啦!",name=sayori,sprites=[sayori("center", "happy")])| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
name |
str或dokibox.Avatar
|
"" |
若传入类型为dokibox.Avatar,则dialogbox会将这个对象视为说话者,并放大10% |
sprites |
列表 | None | 该列表可传入任意数量(不推荐超过6个)的dokibox.Avatar对象,请直接将变量作为魔术函数调用 |
完全的魔术调用如下,以前文创建的sayori角色为例
sayori(position="center", emote="happy", animation="shocked", width=200, height=300, sprite_allow_cover=True)| 参数 | 类型 | 默认值 | 解释 |
|---|---|---|---|
| position | str | 无 | 必须是left center right中的一个,代表了立绘存在的位置,多个立绘可以在同一个位置,程序会自行调整 |
| emote | str | 无 | 请传入先前定义角色时emotes字典中的键名,代表立绘在这个dialogbox下的表情 |
| animation | str | 无 | 详见下文的关于动作参数 |
| width | int | 无 | 立绘的宽,当width和height只有一个设置时等比例缩放 |
| height | int | 无 | 立绘的高,当width和height只有一个设置时等比例缩放 |
| sprite_allow_cover | bool | False | 若为True,则这个dialogbox的该立绘无视平均平滑排布算法,直接覆盖在指定位置 |
| 名称 | 动作 |
|---|---|
| thanks | 立绘向下移动后向上恢复位置,就像鞠躬一样 |
| sad | 立绘向下移动后不再回弹,直到下一次调用dialogbox |
| shocked | 立绘快速向上弹跳起来 |
多个立绘示例
dokibox.dialogbox("原来是这样!难怪到处都是郁郁葱葱的,也太漂亮啦~",name=sayori,sprites=[sayori("left", "happy"),yuri("right", "smiled")])
dokibox.dialogbox("是啊,这么治愈的地方,值得大家一同前来。看来我们默契十足呢~",name=monika, sprites=[sayori("center", "happy"),monika("center", "happy2"),yuri("center", "shocked"),natsuki("center", "mild")])
dokibox.dialogbox("看来大家都不约而同找到了这个好去处呢。哈喽,各位。",name=monika,sprites=[sayori("left", "shocked"),monika("center", "normal", sprite_allow_cover=True),yuri("right", "shocked"),natsuki("center", "shocked")])
如果表情和位置都没有变化时,可以不传入sprites参数或者传入None这意味着直接使用上一个dialogbox的配置
dokibox.dialogbox("原来是这样!难怪到处都是郁郁葱葱的,也太漂亮啦~",name=sayori,sprites=[sayori("left", "happy"),yuri("right", "smiled")])
dokibox.dialogbox("这么舒服的地方,如果能配上甜甜的曲奇就更完美啦~诶嘿嘿~",name=sayori)效果等同于
dokibox.dialogbox("原来是这样!难怪到处都是郁郁葱葱的,也太漂亮啦~",name=sayori,sprites=[sayori("left", "happy"),yuri("right", "smiled")])
dokibox.dialogbox("这么舒服的地方,如果能配上甜甜的曲奇就更完美啦~诶嘿嘿~",name=sayori,sprites=[sayori("left", "happy"),yuri("right", "smiled")])请按照如下方式让想要立场立绘离场
dokibox.dialogbox("大家惊讶地看着我,我也惊讶地看着他们", name="MC", sprites=[monika.hide(),sayori.hide(),yuri.hide(),natsuki.hide()]) #全离场在目标剧情结束后,建议把最后一个dialogbox的fdst参数设置为True,有效销毁窗口,我觉得这应该算个bug但可以通过fdst参数解决,所以搁置解决计划
- Installation
- ynbox
- msgbox
- choicebox
- dialogbox
- diaenterbox
- enterbox
- textbox
- cmdbox
- notice
- garbled
- A save example
- Finally
- 安装
- ynbox
- msgbox
- choicebox
- dialogbox
- diaenterbox
- enterbox
- textbox
- cmdbox
- notice
- garbled
- 一个运用保存和加载的示例
- 在最后
Just Monika. 💚