关于 generate-editor-search-query
这项 Unity skill 将项目资源和场景对象的自然语言搜索需求转为 Unity Search 查询,并在适当时打开搜索窗口。它也规定了仅返回查询文本及处理目标不明确请求的方式。
主要功能
- 01自然语言转 Search 查询
- 02搜索资源和场景对象
- 03按需打开 Unity Search
- 04支持仅返回查询文本
- 05限定搜索范围与安全规则
适用场景
- 01查找材质、预制件或场景
- 02定位场景对象或组件
- 03按文件夹、标签或引用搜索
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ unity-technologies/ skills --skill generate-editor-search-query安装后在 Claude Code 中输入/generate-editor-search-query确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
SECURITY.mdreferences/open-search-window.mdquery-patterns.md详细介绍
将自然语言形式的 Unity Editor 搜索请求转换为实用的 Unity Search 查询,简要说明查询,并在适当时使用该查询打开 Unity Search 窗口。
默认行为
如果提示明确提到 Unity Search、Quick Search、Search 窗口、打开 Search,或要求提供 Unity Search 查询,即使目标属于灯光、UI、物理、音频或动画等其他领域,也要使用此技能处理搜索请求。
对于诸如“查找”“搜索”“定位”“列出”“筛选”“查询”“在哪里”“哪些资源使用了”或“哪些内容引用了”等涉及具体 Unity 资源或场景对象的请求:
- 判断请求主要针对项目资源、场景对象,还是两者都有。
- 构建一个简洁的 Unity Search 查询。
- 在响应中展示查询,然后或同时打开 Search。
- 除非用户明确只要查询文本,否则运行 Editor 端代码片段以打开 Unity Search。
- 如果无法打开 Search,返回查询,并告知用户手动将其粘贴到 Unity Search 中。
如果用户说“不要打开 Search”“仅提供查询”“我应该使用什么查询”“只给我查询”或类似内容,则不要打开 Search。
如果用户要求一般性说明、项目概览、文件夹结构摘要、架构讲解、游戏系统摘要,或“如何”编程解答,除非提示明确要求 Unity Search、Search 查询或打开 Search 窗口,否则不要使用此技能。
如果用户提到“这个”“选中的”或“当前的”,但没有附带资源、场景对象、可见名称或路径,请询问其名称或路径,不要自行臆测。
范围
将只读 Unity Search / Quick Search 查询限制在以下范围:
- 项目资源,例如材质、纹理、预制件、场景、脚本、着色器、音频片段、精灵、网格、模型、动画、字体、渲染纹理和 ScriptableObject 资源
- 场景对象和组件,例如 Camera、Light、Rigidbody、Collider、Renderer、Canvas 对象、UI 组件、ParticleSystem、AudioSource、Animator、Terrain 对象和具名 GameObject
- 按路径、标签、类型、文件名、关键字及引用进行资源搜索
- 对话或附件中提供了名称或路径的选中资源或具名资源
不要安装包、运行菜单命令、编辑资源、修改场景、搜索外部文档、搜索仓库文本、检查构建日志、删除结果、修复搜索结果或执行依赖关系图分析。如果用户要求对结果采取操作,先打开 Search 或提供查询,然后在执行任何单独的修改技能或工作流之前征求确认。
参考资料
生成非简单查询之前,请阅读 references/query-patterns.md。
打开 Search 窗口之前,请阅读 references/open-search-window.md。
官方英文参考资料:
将 C# 传递给 eval
eval 编译的是语句块,而不是文件。因此有两点需要注意,违反任意一点都会导致编译错误:
- 不能使用
using指令。 编译器会将using UnityEditor;视为资源释放 语句并拒绝编译(CS0210)。 - 类型必须使用完全限定名称。 单独写
SearchService无法解析(CS0246),而 单独写Object会与object产生歧义(CS0104)。
unity-cli 技能负责处理前置要求,包括安装 CLI、确认 Editor 已连接、添加项目的
com.unity.pipeline 包,以及发现命令目录。尤其需要使用 eval;如果缺少该命令,请生成查询文本并说明无法打开窗口。
查询生成规则
使用最简单且有望得到所需结果的查询。
- 对资产和组件请求,优先使用类型筛选器,例如
t:material、t:texture、t:prefab、t:scene、t:script、t:shader、t:Light或t:Rigidbody。 - 除非需要加引号,否则将用户提供的名称和关键词作为普通查询词保留。
- 用户提供文件夹,或提到“在 Assets/...”或“在……下”时,使用
dir:。 - 用户请求 Unity 资产标签时,使用
l:。 - 用户询问某资产引用、使用、依赖或包含什么,或与什么有关联时,使用
ref=。 - 仅当 Search 表达式能明显改进查询时才使用,例如
t:prefab ref={t:texture}或t:scene ref={t:prefab}。 - 对于“所选/当前”这类表述,仅当聊天上下文中已知所选资产的名称或路径时才使用;否则询问用户。
- 对于“Rigidbody 用在何处”等宽泛的关系请求,先使用简单关键词或组件查询,然后说明:若用户需要对代码/属性进行穷尽分析,则需另行执行脚本审计。
- 对于同时包含 Search 和修复工作的请求,先生成并打开查询;除非用户明确确认要执行单独的后续操作,否则不要修改结果。
- 对于不确定的请求,不要编造不受支持的筛选器。如果无法用 Unity Search 语法可靠表达请求,则打开最接近且安全的查询,并说明其限制。
打开 Unity Search
仅在编辑器中运行 C# 以打开 Search 窗口。这是编辑器 UI 操作,不得更改项目资产或场景内容。
打开 Search 时:
- 对查询进行 Base64 编码(UTF-8),并仅将 Base64 文本嵌入生成的 C# 字符串中;在代码片段内将其解码回字符串。
- 对于此 v1 skill,优先使用资产和场景提供程序。
- 如果提供程序不可用,则回退到活动提供程序。
- 记录打开的查询。
- 如果命令失败,绝不要声称 Search 已打开。
响应格式
面向用户的回复应简短:
Query: `t:material`
Opened Unity Search with that query.
如果未打开 Search:
Query: `t:prefab ref={t:texture}`
Paste this into Unity Search.
如果请求存在歧义但仍可搜索,请选择最可能的查询并说明假设。只有在无法推断搜索目标时才提问,例如用户只说“找那个东西”,却没有提供资产、场景、类型、名称或上下文。
验证清单
报告成功之前:
- 已向用户展示生成的查询
- 查询针对资产、场景对象,或两者兼有
- 仅当用户未选择退出时才打开 Search
- 清楚说明任何回退或不确定之处
- 未修改任何资产、场景、包、项目设置或搜索结果