Unity NavMesh 寻路
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unity-navmesh-skis。
技能介绍
要解决的问题
在 Unity 里让 NPC 绕过墙角和箱子走到目标点,看起来只是一个「寻路」功能,实际牵扯导航网格烘焙、Agent 参数匹配、动态障碍处理、可达性判断四件事。Unity 6 移除了旧版 Navigation 窗口,按老教程找不到 Bake 按钮——烘焙已改为 AI Navigation 包中的 NavMeshSurface 组件,而运行时 API 仍在 UnityEngine.AI 中。这个技能负责把这一整套机制讲清楚。
核心能力与工作方式
- 烘焙可行走表面:给静态关卡几何体添加
NavMeshSurface组件并执行 Bake;几何体、NavMeshModifier 或 agent 设置变化后需重新烘焙 - 驱动
NavMeshAgent:通过SetDestination设定目标,Agent 自动转向并互相避让;用remainingDistance与pathPending判断是否抵达 - 动态阻挡:用
NavMeshObstacle(carving 模式)让门、箱子等运行时障碍挡住路径,无需重新烘焙整张网格 - 可达性校验:提交目标前检查
NavMeshPath.status,避免 chase 逻辑追一个不可达的目标 - 运行时烘焙:对程序生成或流式加载的关卡,支持调用
BuildNavMesh()现场构建
适用边界
这个技能只解决「怎么走」,不解决「何时走、去哪走」——FSM、行为树、转向决策属于 game-ai,力驱动或 kinematic 的普通移动属于 unity-physics。常见坑:Agent 出生点不在烘焙网格上导致不动或瞬移回原点(用 NavMesh.SamplePosition 吸附到网格);每帧调用 SetDestination 造成浪费(对慢速目标按定时器每 0.2 秒重算一次路径);Agent 半径/高度与烘焙的 agent type 不一致导致卡缝或悬空。
使用场景
- 关卡已做好静态几何体,需要给巡逻 NPC 烘焙可行走表面并让它沿路径移动
- 玩家开门后路径被挡,要用 NavMeshObstacle 动态阻挡并让 Agent 重新绕行
- 追逐任务开始前,脚本需检查目标点是否可达,避免 Agent 停在不可达位置
- 关卡有可移动箱子,Agent 半径与烘焙参数不一致导致卡缝,需要排查尺寸配置
适合人员
- Unity 6 游戏客户端开发,正在给 NPC 接入寻路和动态障碍避让
- 关卡策划,想确认如何配置烘焙参数让敌人能绕过墙角
- 技术美术或 AI 程序,需要排查 Agent 不动、瞬移回原点或互相抖动的问题
- 从旧版迁移到 Unity 6 的开发者,找不到 Navigation 窗口改用 AI Navigation 包