在一个20x16的斜面按钮上,精灵从亮面过渡到第7行的中间色调。我的边框设置顶部为6,这导致过渡点位于可拉伸的中间区域内。因此,随着按钮变高,高光区域会增长,而不是它下方的平面——在120像素高的按钮上,亮边应为7像素,却变成了33像素。这个错误连续发布了三个版本。美术资源从未出错;错的只是一个数字。
取代手动输入边框的规则直接读取像素信息:九宫格的中间区域必须沿拉伸轴保持均匀。连续相邻的相同行是可增长的部分;之外的所有行都是结构部分。因此,你可以从精灵本身推导出最小安全边框,当手写边框不包含它时,构建过程就会失败。
差点随修复一起发布的一个陷阱: 斜面有两个长段均匀行——亮面和中间色调。在一个12x20的滚动条滑块上,它们各有6行,所以"取最长的一段"选中了高光,导致滑块变长时斜面效果被反转。实际有效的规则是优先选择包含精灵中心线的那个连续段,只有当没有连续段包含中心线时才退而求其次选择最长的。
有些美术资源根本无法使用九宫格。 同一个滑块在中间有三条抓握线,而精灵会在每次滚动时重新调整大小,导致抓握线被拉伸成粗条纹。没有边框值能解决这个问题——装饰部分位于必须拉伸的区域。解决方案是修改美术资源,删除抓握线。
明确说明,这是针对Unity的:资源包附带.meta文件,其中的spriteBorder来自同样的测量方法,并且每个文件都会与Godot中对同一精灵的texture_margin进行交叉比对,因此两个独立的导出工具必须达成一致。我这台机器上没有安装Unity,所以这些文件实际上从未在Unity中打开过——检查是基于闭式公式而非经验测试的。如果你尝试使用它们并发现问题,请告诉我。
前后效果对比以及完整说明文档:https://z3er1n.itch.io/ui-pack-vol1/devlog/1651971/v13-the-buttons-9-slice-border-has-been-wrong-since-v10
披露声明:这是我的资源包,需付费获取,并且使用了AI辅助——已在商店页面公开说明。
评论 (0)