移动/游戏
需要编辑 Unity 精灵 Rect、Border…
适用于通过连接 Unity Editor 的 eval 命令,生成 C# 脚本用 ISpriteEditorDataProvider 修改 sprite 资产、精灵表、图集或切片的导入器元数据。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要编辑 Unity 精灵 Rect、B特定
解决思路
- Sprite 元数据(rect、border、pivot、outline)保存在 importer 内,不在可直接编辑的文件中;要访问它,必须通过 live Editor 运行 C#。
- 先遵循 `unity-cli` 技能完成到达 Editor 的步骤:安装 CLI、确认连接的 Editor、添加项目的 `com.unity.pipeline` 包、区分真正缺失 Editor 与卡在 Safe Mode 的 Editor、发现 Editor 的命令目录;不要在这里重新推导这些内容。
- 确认命令目录中特别包含 `eval`,而不仅是有一个可达 Editor;`eval` 是否存在取决于 Pipeline 包版本,不取决于 CLI。
- 永远不要手动编辑 `.meta` 文件来改 sprite 元数据;importer 拥有这些数据,能力检查用于防止损坏,所以 Editor 不可达时应停止,不要即兴替代。
- 通过连接的 Editor 用 `eval` 命令运行 C#;用 `unity command --format json` 发现其参数形态,不要假设;内联形式为 `unity command eval --code '<snippet>'`,有些 Pipeline 版本也注册 `eval_file` 用于从文件运行片段;使用 `eval_file` 前先检查命令目录,因为它经常不存在;`unity command` 默认超时为 30 秒。
- 生成 C# editor 脚本,使用 `ISpriteEditorDataProvider` 操作 Unity sprites;适用于 `TextureImporter`、`PSBImporter` 和自定义 importer。
- 向 `eval` 传 C# 时,它编译的是语句块,不是文件:不要使用 `using` 指令,因为编译器会把 `using UnityEngine;` 当作资源释放语句并拒绝(`CS0210`)。
- 向 `eval` 传 C# 时,类型必须完全限定;裸 `AssetDatabase` 或 `Volume` 不会解析(`CS0246` / `CS0103`),裸 `Object` 会与 `object` 有歧义(`CS0104`)。
- 如果片段原本写成文件(含 usings、为了可读性,或要保存进项目),传给 `eval` 前先限定类型。
- 所有生成的脚本必须遵循 `references/templates.md` 中的 Safe Core Pattern,其中包括 MANDATORY capability checks;如果 capability checks 失败,绝不要尝试操作,以防止数据损坏;执行后,在 Unity console 和 Project window 验证结果。
- 修改 Name/Rect/Border/Pivot:更新对应的 `SpriteRect` 字段(pivot 示例见 `scripts/SetPivotExample.cs`);需要 `EditSpriteName`、`EditSpriteRect`、`EditBorder` 或 `EditPivot`。
- Add/Remove/Slice:创建或过滤 `SpriteRect` 数组(自动、网格、等距切片操作属于此类;Unity 2021.2+ 要求见 `references/background.md`);需要 `CreateAndDeleteSprite`。
- 设置 Outlines:获取 `ISpriteOutlineDataProvider` → 用 GUID + `Vector2` 数组调用 `SetOutlines()`。
- 不要使用 `AssetPostprocessor` 或 `MenuItem` 模式。
- 只生成独立片段——不要 `AssetPostprocessor`,不要 `MenuItem`。
- 枚举赋值:始终使用枚举值并转换为数值类型;永远不要用原始数字。正确:`(int)SpriteAlignment.Center`;错误:`1`(magic number)。
适用边界 · 注意事项
- 没有可连接的 Unity Editor、`eval` 不在命令目录中、或 Editor 卡在 Safe Mode 时,不适用;应停止,不要手动改 `.meta` 或即兴替代。
- capability checks 失败时,不适用任何操作;继续操作会导致数据损坏。
- 不要用 `AssetPostprocessor` 或 `MenuItem` 模式,也不要直接编辑 `.meta` 文件来修改 sprite 元数据。