mcpField
S
sprite-segment-3x3grid

sprite-segment-3x3grid

github.com/unity-technologies创意与媒体1.2k3.5k 次安装1 天前更新
代码仓库

关于 sprite-segment-3x3grid

该 Unity 技能将 Sprite 纹理划分为 3×3 网格,并按中心格主色匹配结果生成文本表示,适用于资源分析与测试。可调整匹配阈值以适应不同颜色区域。

主要功能

  1. 01按 3×3 网格划分纹理
  2. 02识别中心格的主色
  3. 03按阈值比较周围格颜色
  4. 04输出网格文本表示

适用场景

  1. 01记录 Sprite 的颜色分布
  2. 02在自动化测试中核对结构
  3. 03排查 Sprite 外观差异
  4. 04为资源生成可搜索元数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/unity-technologies/skills --skill sprite-segment-3x3grid

安装后在 Claude Code 中输入/sprite-segment-3x3grid确认已加载。

附带文件scripts/SpriteGridAnalysis.cs

详细介绍

Sprite 颜色网格分析

用途

此技能通过将 Sprite 纹理划分为 3x3 网格,并根据与中心单元格的颜色匹配情况生成文本表示,来分析 Sprite 纹理。

参数

匹配阈值

匹配阈值决定非中心单元格中必须有多大比例的像素与中心单元格的主色匹配,才能将该单元格视为“匹配”(。)。

阈值说明使用场景
50%至少一半的单元格像素与中心颜色匹配适用于包含混合区域的 Sprite 的宽松匹配
75%至少四分之三的像素匹配适用于大部分为纯色区域的适度匹配
90%几乎所有像素都必须匹配适用于颜色非常统一的 Sprite 的严格匹配

默认值:75%

算法

  1. 划分 Sprite:将 Sprite 的纹理区域划分为 3x3 网格(共 9 个单元格)
  2. 识别中心颜色:计算中心单元格(位置 [1,1])中的主色(出现频率最高的颜色)
  3. 比较各单元格:对周围 8 个单元格中的每一个,计算与中心主色匹配的像素百分比。如果该百分比达到或超过匹配阈值,则该单元格匹配(.);否则不匹配(X)
  4. 生成输出:使用下方图例生成文本表示

输出图例

符号含义
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 / . . .

实现指南

计算中心主色

对于中心单元格:

  1. 采样单元格边界内的所有像素
  2. 按颜色对像素分组(可考虑为相似颜色设置颜色容差阈值)
  3. 像素数量最多的颜色即为主色
  4. 如果出现并列,则使用最先遇到的颜色
匹配非中心单元格

对于周围 8 个单元格中的每一个:

  1. 计算单元格中的像素总数
  2. 计算与中心主色匹配的像素数量(使用颜色容差)
  3. 计算匹配百分比:matchingPixels / totalPixels
  4. 如果匹配百分比 >= 阈值,则该单元格匹配(.);否则为(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