Unity NavMesh 寻路导航
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unity-navmesh-sh-59jk2r。
技能介绍
它解决什么问题
NPC 要走到某个位置,你得自己回答三件事:地面能不能走、怎么绕过挡路物、什么算到达。Unity 6 起旧的 Navigation 窗口(Object/Bake 标签页)被移除,烘焙改为组件驱动,照着旧教程做的人会直接卡住。这个技能覆盖从烘焙到驱动的整条链路。
它如何工作
- 配置
com.unity.ai.navigation包(AI Navigation 2.x),目标为 Unity 6000.0 LTS。 - 给静态关卡几何体加
NavMeshSurface,设置 agent type 与 area 参数后点 Bake,用 AI Navigation overlay 在 Scene 视图确认结果。 - 给每个移动 NPC 挂
NavMeshAgent,用SetDestination驱动,用remainingDistance/pathPending判断到达。 - 用
NavMeshObstacle(carving)处理门、箱子这类动态阻挡物,无需整图重烤。 - 支持运行时
NavMeshSurface.BuildNavMesh()重建,适配程序化或流式关卡。 - 用
NavMeshPath.status校验可达性,用NavMesh.SamplePosition把出生点对齐到烘焙面。
适用边界与注意点
只负责移动与寻路机制,不负责何时往哪走——FSM、行为树、转向逻辑属于 game-ai;力驱动或 kinematic 移动应交给 unity-physics。
常见坑:agent 不在烘焙面上会不动或瞬移回原点,先 SamplePosition 吸附;NavMeshAgent 的 radius/height 与烘焙 agent type 不一致会卡缝或悬空;每帧 SetDestination 对慢速目标浪费,按 0.2s 定时重算即可;agent 互相抖动可调 avoidancePriority,真正静态阻挡物改用 obstacle,别只靠 agent avoidance。
使用场景
- 在 Unity 6 项目里给敌人加巡逻与追击,需要先烘焙可行走表面再驱动 NavMeshAgent。
- 程序化生成的关卡需要在玩家进入前动态重建导航网格,而不是每次改地形都手工 Bake。
- 门或箱子会被推开挡住通道,想用 NavMeshObstacle 挖洞让路径自动绕行,避免整图重烤。
- NPC 出生后不动或瞬移回原点,需要用 NavMesh.SamplePosition 吸附到烘焙网格上排查。
适合人员
- Unity 客户端程序员,在 Unity 6 项目里给 NPC 接寻路与绕障,遇到旧 Navigation 窗口失效不知道在哪 Bake。
- 技术策划或关卡设计,需要确认哪些区域可行走、动态物体如何阻挡路径,并能直接看到烘焙出的导航网格。
- 玩法程序员,负责敌人移动执行层,想把 FSM 的决策结果交给 NavMeshAgent,而不是自己实现绕障逻辑。
- 程序化关卡程序员,地形在运行时生成,需要不点 Bake 按钮也能重建导航网格。