关于 sprite-editor
面向 Unity 项目的技能,通过连接的 Editor 执行 C#,使用公开接口编辑精灵元数据。它强调能力检查和安全操作,覆盖纹理、PSB 及自定义导入器。
主要功能
- 01通过 Editor eval 执行 C#
- 02编辑精灵名称、矩形、边框和轴心
- 03添加、移除或切分精灵
- 04设置精灵轮廓
- 05修改前执行能力检查
适用场景
- 01批量调整精灵边界和轴心
- 02为精灵添加或移除切片
- 03更新精灵轮廓数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ unity-technologies/ skills --skill sprite-editor安装后在 Claude Code 中输入/sprite-editor确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
SECURITY.mdreferences/api_reference.mdbackground.mdtemplates.mdscripts/AutomaticSliceTexture.csGenerateNewSpriteRects.csGetTextureSourceImageSize.csGetTextureToSlice.csGridSliceTexture.csIsometricSliceTexture.csREADME.mdSetPivotExample.csSpriteToPng.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(魔法数字)
- ✅ 正确: