mcpField
S
sprite-editor

sprite-editor

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

关于 sprite-editor

面向 Unity 项目的技能,通过连接的 Editor 执行 C#,使用公开接口编辑精灵元数据。它强调能力检查和安全操作,覆盖纹理、PSB 及自定义导入器。

主要功能

  1. 01通过 Editor eval 执行 C#
  2. 02编辑精灵名称、矩形、边框和轴心
  3. 03添加、移除或切分精灵
  4. 04设置精灵轮廓
  5. 05修改前执行能力检查

适用场景

  1. 01批量调整精灵边界和轴心
  2. 02为精灵添加或移除切片
  3. 03更新精灵轮廓数据

安装

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

$npx skills add https://github.com/unity-technologies/skills --skill sprite-editor

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

SECURITY.md
references/
api_reference.md
background.md
templates.md
scripts/
AutomaticSliceTexture.cs
GenerateNewSpriteRects.cs
GetTextureSourceImageSize.cs
GetTextureToSlice.cs
GridSliceTexture.cs
IsometricSliceTexture.cs
README.md
SetPivotExample.cs
SpriteToPng.cs

详细介绍

Sprite 编辑器

Sprite 元数据(矩形、边框、轴心、轮廓)存储在导入器中,而不是可编辑的文件里——要访问这些数据,必须通过正在运行的编辑器执行 C#。

如何访问这些数据由 unity-cli 技能负责——包括安装 CLI、确认编辑器已连接、添加项目的 com.unity.pipeline 包、区分编辑器确实不存在还是卡在安全模式,以及发现编辑器的命令目录。请先遵循该技能;不要在这里重新摸索这些内容。

有两件事它无法替你确认:

  • **你需要的是 eval,而不仅仅是能连接到编辑器。**请确认命令目录中存在它——是否有此命令取决于 Pipeline 包版本,而不是 CLI。
  • **切勿手动编辑 .meta 文件来更改 Sprite 元数据。**这些数据由导入器管理,下面的能力检查旨在防止数据损坏,因此如果无法连接到编辑器,就应停止,而不是临时另辟蹊径。

使用 eval 命令,通过已连接的编辑器运行 C#。请通过 unity command --format json 查看其参数格式,不要自行假设——内联形式为 unity command eval --code '<snippet>',有些 Pipeline 版本还会注册 eval_file,用于从文件运行代码片段。使用 eval_file 前请先检查命令目录;它通常不存在。unity command 默认超时时间为 30 秒。

生成用于操作 Unity Sprite 的 C# 编辑器脚本,使用 ISpriteEditorDataProvider。适用于 TextureImporter、PSBImporter 和自定义导入器。

向 eval 传递 C#

eval 编译的是语句块,而不是文件。这会带来两项后果,都会导致编译错误,而非警告:

  • **不能使用 using 指令。**编译器会将 using UnityEngine; 视为资源释放语句,并拒绝它(CS0210)。
  • **类型必须使用完全限定名。**未限定的 AssetDatabase 或 Volume 无法解析(CS0246 / CS0103),而未限定的 Object 会与 object 混淆(CS0104)。

如果下面的代码片段以文件形式编写——包含 using 指令以提高可读性,或用于保存到项目中——请在传递给 eval 前为类型添加限定名。

工作流

所有生成的脚本都必须遵循 references/templates.md 中的 Safe Core Pattern,其中包含强制性能力检查。若能力检查失败,绝不要尝试执行操作——这样可以防止数据损坏。执行后,请在 Unity 控制台和 Project 窗口中验证结果。

常见操作

**修改名称/矩形/边框/轴心:**更新对应的 SpriteRect 字段(轴心示例见 scripts/SetPivotExample.cs)

  • 需要:EditSpriteName、EditSpriteRect、EditBorder 或 EditPivot

**添加/移除/切片:**创建或筛选 SpriteRect 数组(Unity 2021.2+ 的要求见 references/background.md)

  • 需要:CreateAndDeleteSprite

**设置轮廓:**获取 ISpriteOutlineDataProvider → 调用 SetOutlines(),并传入 GUID + Vector2 数组

重要说明

  • 不要使用 AssetPostprocessor 或 MenuItem 模式
  • 仅生成独立代码片段——不要使用 AssetPostprocessor 或 MenuItem
  • **枚举赋值:**始终使用枚举值并将其转换为数值类型。不要使用原始数字。
    • ✅ 正确:(int)SpriteAlignment.Center
    • ❌ 错误:1(魔法数字)

评论

支持 Markdown