关于 sprite-segment-3x3grid
用于分析 Unity Sprite 纹理的技能:将纹理划分为 3×3 网格,并把各格与中心格的主色比较。它按可配置的匹配阈值生成简洁文本图案,适用于记录、测试和检查 Sprite。
主要功能
- 01将 Sprite 纹理划分为九格
- 02识别中心格的主色
- 03按匹配阈值比较周围格
- 04用 X、. 和 * 输出文本网格
- 05设置颜色匹配容差
适用场景
- 01简洁记录 Sprite 图案
- 02在自动化测试中检查 Sprite 结构
- 03比较不同 Sprite 的颜色分布
- 04调试时检查视觉差异
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ unity-technologies/ unity-agent-plugin --skill sprite-segment-3x3grid安装后在 Claude Code 中输入/sprite-segment-3x3grid确认已加载。
附带文件scripts/SpriteGridAnalysis.cs
详细介绍
Sprite 颜色网格分析
用途
此技能通过将 Sprite 纹理划分为 3x3 网格,并根据与中心单元格的颜色匹配情况生成文本表示,来分析 Sprite 纹理。
参数
匹配阈值
匹配阈值决定非中心单元格中必须有多大比例的像素与中心单元格的主色匹配,才能将该单元格视为“匹配”(。)。
| 阈值 | 说明 | 使用场景 |
|---|---|---|
| 50% | 至少一半的单元格像素与中心颜色匹配 | 适用于包含混合区域的 Sprite 的宽松匹配 |
| 75% | 至少四分之三的像素匹配 | 适用于大部分为纯色区域的适度匹配 |
| 90% | 几乎所有像素都必须匹配 | 适用于颜色非常统一的 Sprite 的严格匹配 |
默认值:75%
算法
- 划分 Sprite:将 Sprite 的纹理区域划分为 3x3 网格(共 9 个单元格)
- 识别中心颜色:计算中心单元格(位置 [1,1])中的主色(出现频率最高的颜色)
- 比较各单元格:对周围 8 个单元格中的每一个,计算与中心主色匹配的像素百分比。如果该百分比达到或超过匹配阈值,则该单元格匹配(
.);否则不匹配(X) - 生成输出:使用下方图例生成文本表示
输出图例
| 符号 | 含义 |
|---|---|
X | 单元格未达到匹配阈值(与中心颜色匹配的像素不足) |
. | 单元格达到匹配阈值(与中心颜色匹配的像素足够) |
* | 中心单元格(始终位于网格中的位置 [1,1]) |
输出格式
输出为一行,包含三组各由三个字符组成的内容,组间以 / 分隔。每组代表网格的一行。
顺序:从上到下排列各行,每行内从左到右排列。
格式:[TopRow] / [MiddleRow] / [BottomRow]
每行包含 3 个字符,字符之间以空格分隔:[Left] [Center] [Right]
网格位置映射
Grid Layout: Output Order:
[0,0] [1,0] [2,0] 1 2 3 -> First group
[0,1] [1,1] [2,1] 4 5 6 -> Second group (5 is always *)
[0,2] [1,2] [2,2] 7 8 9 -> Third group
示例
示例 1:中心仅与左上和右下匹配
. X X / X * X / X X .
网格解读:
. X X
X * X
X X .
示例 2:中心与周围所有单元格匹配
. . . / . * . / . . .
示例 3:中心与周围单元格均不匹配
X X X / X * X / X X X
示例 4:中心仅与底行匹配
X X X / X * X / . . .
实现指南
计算中心主色
对于中心单元格:
- 采样单元格边界内的所有像素
- 按颜色对像素分组(可考虑为相似颜色设置颜色容差阈值)
- 像素数量最多的颜色即为主色
- 如果出现并列,则使用最先遇到的颜色
匹配非中心单元格
对于周围 8 个单元格中的每一个:
- 计算单元格中的像素总数
- 计算与中心主色匹配的像素数量(使用颜色容差)
- 计算匹配百分比:
matchingPixels / totalPixels - 如果匹配百分比 >= 阈值,则该单元格匹配(
.);否则为(X)
颜色容差
比较像素颜色时:
- 可考虑使用容差阈值(例如,RGB 距离 < 10)来判断是否“匹配”
- 对于颜色数量有限的 Sprite,也可以进行精确匹配
- 根据使用场景考虑是否处理 Alpha 通道
Sprite 边界
使用 Sprite 的 rect 属性确定要分析的像素区域:
- 使用
sprite.rect.x、sprite.rect.y获取原点 - 使用
sprite.rect.width、sprite.rect.height获取尺寸 - 将宽度和高度分别除以 3,得到单元格尺寸
参考
代码模板:"scripts/SpriteGridAnalysis.cs"
使用场景
- 文档:以紧凑的文本格式描述 Sprite 图案
- 测试:在自动化测试中验证预期的 Sprite 结构
- 分析:快速识别颜色分布相似的 Sprite
- 调试:了解 Sprite 外观与预期不同的原因
- 资源编目:为 Sprite 资源生成可搜索的元数据
说明
- 此分析最适用于具有明显色块的精灵图
- 对于带有渐变或颜色较多的精灵图,可考虑提高颜色容差
- Y 轴已从 Unity 的纹理坐标系翻转,以生成从上到下的输出
- 根据使用场景,可将透明像素视为一种独立的“颜色”,也可忽略
评论
支持 Markdown