Unity 的AI Navigation 系统详细总结

Unity 的AI Navigation 系统 (2022.2 及以上版本通过 AI Navigation 包实现)可让角色在游戏世界智能导航,核心基于自动生成的导航网格(NavMesh) ,支持动态障碍物 实时调整导航、OffMesh Link 实现跳跃 / 开门等特殊动作,关键组件包括 NavMesh Agent(角色导航)、NavMesh Surface(NavMesh 生成)等,通过A * 算法 实现路径查找,结合RVO进行障碍物规避,还可通过区域成本、Area Mask 等配置优化导航逻辑,同时提供了从旧版导航系统升级、组件配置、脚本开发(如点击移动、巡逻)等完整使用指南。


2. 思维导图(mindmap)

预览

查看代码

配置障碍物:添加Obstacle组件,设置形状/雕刻模式

创建Agent:添加Agent组件+脚本控制(目标点/点击移动/巡逻)

生成NavMesh:添加Surface组件→配置→Bake

NavMesh Link:连接多个NavMesh Surface

OffMesh Link:实现跳跃、开门等非步行导航

NavMesh Obstacle:定义障碍物(支持阻塞/雕刻模式)

NavMesh Agent:定义导航角色(半径、速度等属性)

NavMesh Modifier Volume:按区域修改NavMesh类型

NavMesh Modifier:调整GameObject对NavMesh烘焙的影响

NavMesh Surface:生成NavMesh,支持HeightMesh、自动生成链接

调试工具:Navigation窗口、AI Navigation覆盖层、偏好设置

示例项目:多Agent尺寸、动态路径、无限地形等8个场景

烘焙参数:体素大小(3 voxels/半径默认)、瓦片大小(256 voxels默认)

Agent属性:半径、高度、速度、角速度等(0-99优先级,0为最高)

区域设置:3种内置区域(Walkable等)+29种自定义区域,支持成本配置

动画联动:通过Animator+脚本实现导航与动画同步

核心操作

项目升级:旧版导航项目自动安装包,支持直接使用/转换

特殊导航

角色与障碍物

NavMesh相关

适配版本:Unity 2022.2+(依赖AI Navigation包)

关键技术:A*算法(路径查找)、RVO(障碍物规避)

核心功能:角色智能导航、路径查找、障碍物规避

五、辅助资源

四、关键配置

三、使用流程

二、核心组件与功能

一、AI Navigation系统概述

配置障碍物:添加Obstacle组件,设置形状/雕刻模式

创建Agent:添加Agent组件+脚本控制(目标点/点击移动/巡逻)

生成NavMesh:添加Surface组件→配置→Bake

NavMesh Link:连接多个NavMesh Surface

OffMesh Link:实现跳跃、开门等非步行导航

NavMesh Obstacle:定义障碍物(支持阻塞/雕刻模式)

NavMesh Agent:定义导航角色(半径、速度等属性)

NavMesh Modifier Volume:按区域修改NavMesh类型

NavMesh Modifier:调整GameObject对NavMesh烘焙的影响

NavMesh Surface:生成NavMesh,支持HeightMesh、自动生成链接

调试工具:Navigation窗口、AI Navigation覆盖层、偏好设置

示例项目:多Agent尺寸、动态路径、无限地形等8个场景

烘焙参数:体素大小(3 voxels/半径默认)、瓦片大小(256 voxels默认)

Agent属性:半径、高度、速度、角速度等(0-99优先级,0为最高)

区域设置:3种内置区域(Walkable等)+29种自定义区域,支持成本配置

动画联动:通过Animator+脚本实现导航与动画同步

核心操作

项目升级:旧版导航项目自动安装包,支持直接使用/转换

特殊导航

角色与障碍物

NavMesh相关

适配版本:Unity 2022.2+(依赖AI Navigation包)

关键技术:A*算法(路径查找)、RVO(障碍物规避)

核心功能:角色智能导航、路径查找、障碍物规避

五、辅助资源

四、关键配置

三、使用流程

二、核心组件与功能

一、AI Navigation系统概述

复制代码
## 一、AI Navigation系统概述
- 核心功能:角色智能导航、路径查找、障碍物规避
- 关键技术:A*算法(路径查找)、RVO(障碍物规避)
- 适配版本:Unity 2022.2+(依赖AI Navigation包)
## 二、核心组件与功能
- NavMesh相关
  - NavMesh Surface:生成NavMesh,支持HeightMesh、自动生成链接
  - NavMesh Modifier:调整GameObject对NavMesh烘焙的影响
  - NavMesh Modifier Volume:按区域修改NavMesh类型
- 角色与障碍物
  - NavMesh Agent:定义导航角色(半径、速度等属性)
  - NavMesh Obstacle:定义障碍物(支持阻塞/雕刻模式)
- 特殊导航
  - OffMesh Link:实现跳跃、开门等非步行导航
  - NavMesh Link:连接多个NavMesh Surface
## 三、使用流程
- 项目升级:旧版导航项目自动安装包,支持直接使用/转换
- 核心操作
  - 生成NavMesh:添加Surface组件→配置→Bake
  - 创建Agent:添加Agent组件+脚本控制(目标点/点击移动/巡逻)
  - 配置障碍物:添加Obstacle组件,设置形状/雕刻模式
- 动画联动:通过Animator+脚本实现导航与动画同步
## 四、关键配置
- 区域设置:3种内置区域(Walkable等)+29种自定义区域,支持成本配置
- Agent属性:半径、高度、速度、角速度等(0-99优先级,0为最高)
- 烘焙参数:体素大小(3 voxels/半径默认)、瓦片大小(256 voxels默认)
## 五、辅助资源
- 示例项目:多Agent尺寸、动态路径、无限地形等8个场景
- 调试工具:Navigation窗口、AI Navigation覆盖层、偏好设置

3. 详细总结

一、系统基础信息
  1. 核心定位:Unity 的 AI Navigation 系统用于实现游戏角色(Agent)在 3D 场景中的智能导航,通过导航网格(NavMesh)、路径查找算法和障碍物规避逻辑,让角色自主移动至目标点。
  2. 依赖与适配
    • 适配版本:Unity 2022.2 及以上
    • 核心依赖:AI Navigation 包(旧版导航项目升级时自动安装)
  3. 关键技术
    • 路径查找:A*(A star)算法,基于 NavMesh 的凸多边形节点网络计算最短路径
    • 障碍物规避:RVO(Reciprocal Velocity Obstacles)算法,预测并避免与其他 Agent / 障碍物碰撞
更新类型 具体内容
新增功能 1. NavMesh Surface 支持烘焙 HeightMesh;2. NavMesh Surface 支持自动生成链接;3. NavMesh Surface 新增仅使用带 NavMesh Modifier 的源对象;4. NavMesh Modifier 支持作用于子对象
界面调整 1. 仅安装包后显示 Navigation 窗口;2. 移除 Navigation 窗口的 Bake 和 Object 标签(移至 Navigation (Obsolete) 窗口);3. 静态编辑器标志下拉菜单移除 Navigation Static 和 OffMesh Link Generation 选项
其他优化 改进部分示例项目,提供完整更新日志
三、项目升级与迁移
  1. 旧项目兼容
    • 自动安装:使用旧版导航功能的项目升级至 Unity 2022.2 + 后,自动安装 AI Navigation 包
    • 三种选择:直接沿用旧项目配置、转换为新版包、移除旧组件脚本(避免冲突)
  2. 项目转换步骤
    1. 打开 Window > AI > NavMesh Updater
    2. 选择要转换的数据类型
    3. 点击 Initialize Converters 检测数据
    4. 选择目标数据,点击 Convert Assets 完成转换
  3. Agent 类型创建与分配
    • 新建步骤:Window > AI > Navigation → Agents 标签 → 添加并配置参数
    • 分配对象:NavMeshSurfaces 和对应的 NavMeshAgents
四、核心组件详解
(1)NavMesh 相关组件
组件名称 核心功能 关键参数
NavMesh Surface 定义 Walkable 区域并烘焙 NavMesh 1. Agent Type(关联导航角色类型);2. Default Area(默认区域类型);3. Use Geometry(Render Meshes/Physics Colliders);4. 高级参数:体素大小(默认 3 voxels / 半径)、瓦片大小(默认 256 voxels)
NavMesh Modifier 调整 GameObject 对 NavMesh 烘焙的影响 1. Mode(Add/Remove Object);2. Apply to Children(是否作用于子对象);3. Override Area(修改区域类型)
NavMesh Modifier Volume 按区域修改 NavMesh 类型 1. Size/Center(定义区域范围);2. Area Type(目标区域类型);3. Affected Agents(作用的 Agent 类型)
(2)角色与障碍物组件
  1. NavMesh Agent
    • 核心作用:定义可导航的角色,处理路径查找和移动控制
    • 关键属性:
      • 基础属性:半径(默认 0.5)、高度(默认 2)、Base Offset(碰撞 cylinder 偏移)
      • 运动属性:Speed(最大速度)、Angular Speed(角速度)、Acceleration(加速度)、Stopping Distance(停止距离)
      • 规避属性:Radius(碰撞半径)、Height(高度间隙)、Quality(规避质量)、Priority(优先级:0-99,0 最高)
      • 路径属性:Area Mask(可导航区域)、Auto Repath(是否自动重新路径)、Auto Traverse OffMesh Link(是否自动 traversal 链接)
  2. NavMesh Obstacle
    • 核心作用:定义 Agent 需规避的障碍物(如箱子、车辆)
    • 两种模式:
      • 阻塞模式(Carve 禁用):类似 Collider,Agent 近距离碰撞规避
      • 雕刻模式(Carve 启用):静止时在 NavMesh 上雕刻孔洞,移动时转为阻塞
    • 关键参数:Shape(Box/Capsule)、Move Threshold(移动阈值)、Carving Time To Stationary(静止雕刻延迟)
(3)特殊导航组件
组件名称 核心功能 关键参数
OffMesh Link 实现非步行导航(跳跃、开门等) 1. Start/End(链接起点 / 终点);2. Bi-Directional(是否双向);3. Cost Override(路径成本覆盖);4. Navigation Area(区域类型)
NavMesh Link 连接多个 NavMesh Surface 1. Agent Type(匹配的 Agent 类型);2. Start/End Point(链接点);3. Bidirectional(双向导航)
五、导航核心逻辑
  1. NavMesh 生成
    • 基于场景几何结构,自动检测 Agent 可站立的位置,生成凸多边形组成的导航网格
    • 烘焙步骤:选择场景几何→添加 NavMesh Surface→配置参数→点击 Bake
  2. 路径查找流程
    1. 将起点和终点映射到最近的 NavMesh 多边形节点
    2. 使用 A * 算法遍历相邻节点,生成从起点到终点的多边形序列(走廊)
    3. Agent 沿走廊的可见拐角转向移动
  3. 障碍物规避与动态调整
    • 动态障碍物:通过 RVO 算法预测碰撞,调整 Agent 速度和方向
    • 静态障碍物:通过 NavMesh 雕刻(Carve)在网格上创建孔洞,修改导航路径
  4. 区域与成本控制
    • 区域类型:3 种内置(Walkable/Not Walkable/Jump)+29 种自定义
    • 成本机制:区域成本 × 距离 = 路径总成本,A * 算法优先选择低成本路径(成本需 > 1.0)
    • Area Mask:Agent 可指定仅导航特定区域(如人类可通过门,僵尸不可)
六、常用脚本与功能实现
功能需求 核心脚本 关键代码逻辑
目标点移动 MoveTo.cs 读取 NavMeshAgent 组件,设置 agent.destination = 目标位置
鼠标点击移动 MoveToClickPoint.cs 监听鼠标点击→射线检测场景→设置 agent.destination = 点击点
巡逻移动 Patrol.cs 定义巡逻点数组→循环设置目标点→距离小于 0.5f 时切换下一个点
导航与动画联动 ClickToMove.cs+LocomotionSimpleAgent.cs 1. 点击设置导航目标;2. 传递 Agent 速度到 Animator;3. 同步角色位置与 Agent 位置
七、辅助工具与资源
  1. 调试工具
    • Navigation 窗口:配置 Agent 类型、区域成本
    • AI Navigation 覆盖层:显示 NavMesh、Agent 路径、障碍物等调试信息
    • 偏好设置:调整 NavMesh 显示透明度、HeightMesh 颜色等
  2. 示例项目:共 8 个核心示例,包括多 Agent 尺寸、动态路径(Drop Plank)、无限地形(Sliding Window Infinite)、Height Mesh 楼梯导航等
  3. 术语表:关键术语包括 Animation Blend Tree(动画混合树)、Rigidbody(刚体)、Root Motion(根运动)、NavMesh(导航网格)等

4. 关键问题

答案

  • 阻塞模式(Carve 禁用):默认模式,类似 Collider 组件,Agent 仅在近距离时通过基础碰撞规避逻辑避开障碍物,规避半径短、逻辑简单。适用于持续移动的动态障碍物(如玩家控制的角色、行驶的车辆)。
  • 雕刻模式(Carve 启用):静止时在 NavMesh 上雕刻孔洞,修改导航网格;移动时转为阻塞模式。Agent 可通过路径查找绕开障碍物,适用于可移动但常静止的障碍物(如可推动的箱子、爆炸后移动的 barrels),需注意开启后会增加 CPU 开销,可通过 Move Threshold 和 Carving Time To Stationary 参数优化。

答案

  • 迁移步骤:
    1. 项目升级后,AI Navigation 包会自动安装;
    2. 打开 Window > AI > NavMesh Updater,选择要转换的数据类型(如 NavMesh、Navigation Static 标记);
    3. 执行 Initialize Converters 检测数据,选择目标数据后点击 Convert Assets 完成转换。
  • 注意事项:
    1. 冲突规避:若项目使用了 Unity NavMeshComponents GitHub 仓库的旧脚本(如 NavMesh Surface、NavMesh Modifier),需先删除这些脚本及关联文件,否则会导致组件冲突报错;
    2. 组件差异:新版 NavMesh Surface 新增 "仅使用带 NavMesh Modifier 的源对象" 选项,NavMesh Modifier 支持作用于子对象,需重新检查相关配置;
    3. Agent 类型重建:不同场景的 NavMesh 若使用不同 Agent 设置,需重新创建对应的 Agent 类型并分配给 NavMeshSurfaces 和 NavMeshAgents。

答案

  • 核心配置:
    1. 导航配置:生成 NavMesh→给角色添加 NavMesh Agent 组件(设置半径、速度等,禁用 Auto Braking 以实现连续巡逻);
    2. 动画配置:创建 Animator Controller,包含 2D 混合树(velx/vely 参数控制移动动画)和 Idle 动画,添加 move 布尔参数控制状态切换。
  • 脚本逻辑:
    1. 巡逻脚本(Patrol.cs):定义 public Transform [] points 巡逻点数组,Start () 中获取 NavMeshAgent 并调用 GotoNextPoint ();Update () 中检测 agent.remainingDistance<0.5f 时切换下一个巡逻点,通过 destPoint=(destPoint+1)% points.Length 实现循环;
    2. 动画联动脚本(LocomotionSimpleAgent.cs):获取 Agent 速度并转换为本地空间的 velx/vely,传递给 Animator;通过 OnAnimatorMove () 同步角色位置与 Agent.nextPosition;
    3. 关键参数:混合树过渡时间设为 0.1 秒,move 参数阈值设为 0.5f(速度 magnitude>0.5f 时触发移动动画)。
相关推荐
NAGNIP9 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab10 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab10 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP14 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年14 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼14 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS15 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区16 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈16 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang16 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx