设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1366|回复: 3
打印 上一主题 下一主题

[已经解决] 求助bug,yanfly的物品提示窗口

[复制链接]

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21040
在线时间
9340 小时
注册时间
2012-6-19
帖子
7107

开拓者短篇九导演组冠军

1
发表于 2022-12-27 23:21:48 | 显示全部楼层
本帖最后由 喵呜喵5 于 2022-12-27 23:28 编辑

text_size 不会处理转义符
text_size 计算文字尺寸时是不会处理这些转义符的,它会简单粗暴的直接根据文字的原始内容计算尺寸
因此第一个bug 是你用 text_size 计算出来的文字实际宽度是不准确的
bug 的影响就是你以为计算的结果可以让文字能保证居中,实际转义符多了位置偏左偏右都有可能

draw_text_ex 会修改窗口后续所有文本的字体大小
在 draw_text_ex 的文本中,遇到 \{ 时会让对应字体大小缩小,你配置的提示文本用到了这个特性。文字大小变化靠的是修改当前窗口的 contents.font.size 属性来实现的
因为 draw_text_ex 最开始都会调用 reset_font_settings 将字体的尺寸恢复为初始值保证每次绘制相同内容的结果都是一样的所以普通代码这样做没问题
但是在还没恢复初始值时你调用了 text_size ,而 text_size 是根据 contents.font.size 来计算文字宽度的结果的
所以,在 draw_text_ex 前加入一段代码:p contents.font.size 就会注意到:窗口在输出第一段提示的时候和输出后续几段提示的时候当前字体大小实际上不一样的,
因此就是你游戏里的表现在相同的提示文本下,第一段的位移和其他几段不一样

为什么是每次清空后文本就对不齐了
因为每次清空后会调用 refresh 方法,会删掉当前窗口的 content 新创建一个,相当于将字体大小恢复为初始值

解决方向
提供以下四种思路你自己挑个简单的:
1. 在 draw_text_ex 后面手动加上 reset_font_settings 重置一下字体大小,这样每次调用 text_size 时当前窗口的字体大小都是一致的了,然后大家就都是歪的了(喂)
2. 不使用 \{ ,而是直接在 create_contents 后面加上 contents.font.size = XXX 来手动设置字体大小,保证每次调用 text_size 时当前窗口的字体大小都是一致的
3. CLOSER_TEXT 里加上 \} 把文字尺寸复原回来
4. 自己写一个能正确处理转义符的 text_size 方法,参考我这脚本的 207 行 https://script.miaowm5.com/post/1 (我看了眼,代码实现太复杂了还是别参考了)(喂)
实现思路实际上就是在一个透明窗口上调用 draw_text_ex 绘制完文字后,看绘制完文字时的光标位置,从而得出实际的文字长度
回复 支持 1 反对 0

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21040
在线时间
9340 小时
注册时间
2012-6-19
帖子
7107

开拓者短篇九导演组冠军

2
发表于 2022-12-27 23:33:25 | 显示全部楼层
题外话:
这脚本的功能我没看懂,为啥就显示获得1个物品却需要把所有获得的物品都记录下来,并且每次获得物品还用全部都描绘一遍
这要是一直不触发切换地图自动清空的行为而疯狂获得物品,游戏不就炸了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-15 11:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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