mcpField
I
initialize-ai-navigation

initialize-ai-navigation

github.com/unity-technologies开发1.2k5.6k 次安装1 天前更新
代码仓库

关于 initialize-ai-navigation

面向 Unity 开发者和编码 Agent 的导航配置技能,可按需求选择 NavMesh 组件,并指导检查、设置与验证。

主要功能

  1. 01按意图分流导航需求
  2. 02检查 AI Navigation 包安装情况
  3. 03检查场景中的现有组件
  4. 04指导 NavMesh 配置与验证
  5. 05涵盖移动和巡逻方案

适用场景

  1. 01为角色添加寻路功能
  2. 02排查 Agent 无有效路径的问题
  3. 03连接分离的 NavMesh 区域
  4. 04设置点击移动或巡逻行为

安装

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

$npx skills add https://github.com/unity-technologies/skills --skill initialize-ai-navigation

安装后在 Claude Code 中输入/initialize-ai-navigation确认已加载。

附带文件references/navigation-system.md

详细介绍

确定用户的需求,并引导他们完成导航设置。有关组件详情、API 说明、代码示例和故障排查的扩展信息,请参阅 navigation-system.md。

将 C# 传递给 eval

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

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

如果下面的代码片段以文件形式编写(为了便于阅读而包含 using,或是需要保存到项目中),请在传递给 eval 前为类型添加限定名称。

路由逻辑

用户说解读
“添加导航”/“设置导航”完整设置:NavMeshSurface + 烘焙 + NavMeshAgent
“让这个角色能够导航”添加 NavMeshAgent,并确保存在 NavMesh
“添加寻路”NavMeshAgent + 移动脚本
“Agent 不动”/“找不到路径”故障排查——参见参考文档中的故障排查决策树
“避开障碍物”使用 carving 或避让功能的 NavMeshObstacle
“连接两个区域”/“跳过去”在区域之间添加 NavMeshLink
“在多个点之间巡逻”NavMeshAgent + 巡逻脚本
“点击以移动”NavMeshAgent + 射线检测点击移动脚本
“让角色在导航时播放动画”将 Animator 与 NavMeshAgent 配合使用
“不同的 Agent 尺寸”在 Navigation 窗口中配置 Agent 类型
“区域和代价”/“限制区域”NavMesh 区域类型、修饰器和 Agent 区域掩码

工作流

0. 检查包安装情况

在进行任何其他操作之前,确认已安装 com.unity.ai.navigation。如果缺少该包,请将其添加到 Packages/manifest.json 的 dependencies 中——Unity 会在 Editor 下次重新获得焦点时解析该包,无需连接 Editor:

"com.unity.ai.navigation": "<current 2.x version>"

不要臆造版本字符串。从 Unity 注册表中读取当前版本——https://packages.unity.com/com.unity.ai.navigation 列出了所有已发布版本——或者复制此清单中相邻 Unity 包使用的版本。不存在的版本会导致 Unity 静默解析失败,因此错误的猜测看起来就像什么都没发生。

只有确认安装完成后才能继续。如果你可以在运行中的 Editor 中执行 C#,请参阅 navigation-system.md 中的 Client.Add 等效方式。

1. 前置检查:评估当前导航设置

进行更改前,检查已有内容:

  1. 查找现有导航组件。如果已连接 Editor,请查询运行中场景里的 NavMeshSurface、NavMeshAgent、NavMeshObstacle、NavMeshLink 和 NavMeshModifier——有关如何驱动正在运行的 Editor,请参阅 unity-cli 技能。如果未连接,请在场景和预制件文件中搜索这些组件名称。
  2. 通过 Window > AI > Navigation > Agents 选项卡检查已配置的 Agent 类型。
  3. 提出更改建议前,总结所有检测到的导航组件。
2. 收集缺失信息

创建组件前,确保用户已指定:可行走表面、Agent 类型/尺寸、Agent 行为、障碍物、链接以及区域/代价要求。如有不清楚之处,请先询问。完整详情请参阅参考文档中的信息收集清单。

3. 规划与执行

按以下通用顺序进行。有关每个组件的详细分步说明,请参阅参考资料中的组件设置指南:

  1. NavMesh Surface — 创建可行走网格(烘焙)
  2. NavMesh Agent — 添加寻路角色
  3. NavMesh Obstacle — 添加动态障碍物
  4. NavMesh Link — 连接断开的 NavMesh 区域
  5. NavMesh Modifier / Modifier Volume — 微调区域类型
  6. 脚本 — 移动、巡逻、点击移动、动画联动(请参阅参考资料中的常见操作方案)
4. 验证

设置完成后,确认:

  • NavMesh 已烘焙且可见(蓝色叠加层)
  • NavMeshSurface 的 Agent 类型与 NavMeshAgent 的 Agent 类型一致
  • Agent 存在通往目标位置的有效路径
  • 障碍物能够正确地刻蚀或阻挡
  • Link 的两端均已连接,并且已启用 Activated
  • 区域遮罩允许预期的移动
  • 没有相互冲突的组件(请参阅参考资料中的组件混用指南)
  • 如果 NavMeshAgent 使用 Rigidbody,则已启用 Is Kinematic
5. 最终确认

总结创建或更改的内容:

  • NavMesh Surface:对应的 GameObject、Agent 类型、几何体模式、烘焙状态
  • NavMesh Agent:对应的 GameObject、速度、停止距离、区域遮罩
  • NavMesh Obstacle:对应的 GameObject、形状、是否启用 carve
  • NavMesh Link:起点/终点、是否双向、区域类型
  • 脚本:哪些脚本附加到了哪些 GameObject
  • 所需的任何手动步骤(调整路径点、场景更改后重新烘焙等)

评论

支持 Markdown