news 2026/6/13 23:53:24

Unity AI Navigation 从 0 到 1:一篇吃透新 NavMesh 系统的实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity AI Navigation 从 0 到 1:一篇吃透新 NavMesh 系统的实战

一、为什么你必须升级到老 NavMesh?

如果你还在用 2021 LTS 之前的 Navigation 窗口做 Bake,那你一定踩过这些坑:

  • 场景里一移动箱子,就要重烤 NavMesh,CPU 直接爆炸;

  • 不同体型的 NPC 必须共用同一张 Mesh,导致“巨人穿不过门、老鼠上楼梯”这种魔幻现实;

  • 代码里各种NavMeshAgent.SetDestination写得好好的,一上真机就集体“漂移”。

Unity 2022.2 之后,官方把导航整块拆成AI Navigation 包(com.unity.ai.navigation),老系统被标记为 Obsolete。新系统 = 可运行时烘焙 + 多代理支持 + 真正的动态障碍,香到飞起。


二、5 分钟搭好最小可跑场景

  1. 新建 3D 项目,把 AI Navigation 包装上(Window → Package Manager → Unity Registry)。

  2. 建一个 Plane 当地面,摆几堵 Cube 当墙。

  3. GameObject → AI → NavMesh Surface,选中地面 + 墙壁,Inspector 点 Bake,蓝色网格瞬间生成。

  4. GameObject → 3D Object → Cylinder,Add Component → NavMesh Agent。

  5. 给圆柱挂个脚本:

csharp

复制

using UnityEngine; using UnityEngine.AI; public class MoveToClick : MonoBehaviour { NavMeshAgent agent; void Start() => agent = GetComponent<NavMeshAgent>(); void Update() { if (Input.GetMouseButtonDown(0)) { if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out var hit)) agent.destination = hit.point; } } }
  1. 运行 → 鼠标点哪圆柱走哪,路径实时避墙,全程零魔法。


三、新系统核心概念一张图看懂

表格

复制

组件作用和老版差异
NavMesh Surface真正持有 NavMesh 数据,可运行时 Bake老版数据藏在场景里,无法动态更新
NavMesh Modifier让子树在烘焙时“无视/改 Area/禁止走路”替代 Navigation Static 复选框
NavMesh Modifier Volume立方体区域内强行改 Area老版做不到“空气墙”
NavMesh Link / Off-Mesh Link跳跃、爬梯、开门新版支持运行时改起点终点
NavMesh Obstacle动态障碍,两种模式:Obstruct vs Carve老版只有 Obstruct,不会挖洞

四、动态障碍:从“撞墙”到“挖洞”

把箱子加上 Rigidbody + NavMesh Obstacle:

  • Obstruct 模式:箱子靠 RVO 被绕开,适合不停移动的推车。

  • Carve 模式:箱子静止后在 NavMesh 上挖洞,重新寻路,适合可被玩家拖动的障碍。
    记得把Carve Only Stationary勾上,移动时不反复挖洞,性能翻倍。


五、多体型 NPC:一张图各自走各路

  1. Window → AI → Navigation → Agents 页签,新增两种 Agent Type:

    • Humanoid:半径 0.5 m,高 2 m,跳距 3 m。

    • Spider:半径 0.3 m,高 0.4 m,可爬 80° 斜坡。

  2. 给地面再挂两个 NavMesh Surface,各自指定 Agent Type,Bake 出两张 Mesh。

  3. 把士兵的 NavMesh Agent → Agent Type 选 Humanoid,小蜘蛛选 Spider,从此各走各的路,互不抢道。


六、运行时烘焙:无限地图的杀手锏

csharp

复制

NavMeshSurface surface; void Start() { surface = GetComponent<NavMeshSurface>(); surface.BuildNavMesh(); // 一帧搞定 }

配合Sliding Window示例,角色走到哪,NavMesh 就增量烘焙到哪,内存只保留玩家周围 128×128 m 的格子,真正做到“伪无限”大世界。


七、动画 + 导航:告别“滑冰”

老版 Root Motion 和 NavMeshAgent 互相打架?新版官方直接给出模板脚本LocomotionSimpleAgent.cs

  1. 关闭agent.updatePosition / updateRotation,由动画驱动位置。

  2. 每帧把agent.nextPosition同步回transform.position,误差过大时再把角色拉回代理位置,兼顾“真实踩点”与“碰撞避让”。

  3. agent.steeringTarget喂给 LookAt IK,提前转头,动作自然。


八、常见坑与调优 checklist

  • Bake 失败全红:检查是否忘了给地面加 Collider 或 NavMesh Modifier 把对象设成 Walkable。

  • Agent 原地打转:把Angular Speed调到 500+,或把Acceleration降低。

  • Carve 后帧率暴跌:Tile Size 默认 256 改 64, carving 并行度↑;移动阈值(Move Threshold)≥ 0.5 m。

  • Off-Mesh Link 不走:确认两端在 NavMesh 上且 Area Mask 包含 Jump;Cost Modifier 别手滑填了 999。

  • Height Mesh 踩空楼梯:在 NavMesh Surface → Advanced → Build Height Mesh 勾上,代理会精确贴楼梯高度,不再悬空滑。


九、升级老项目 3 步走

  1. 备份!

  2. Window → AI → NavMesh Updater → Convert → 一键把旧 Navigation Static 转成 NavMesh Modifier。

  3. 删掉早年从 GitHub 扒的NavMeshComponents脚本,避免重复定义。


十、结语

AI Navigation 不是“小修小补”,而是 Unity 导航的彻底重构:

  • 数据与场景解耦 → 支持 DLC 动态加载;

  • 多代理、多 Area → 战术 FPS、RTS、潜行各取所需;

  • 运行时烘焙 + 动态雕刻 → 沙盒、Roguelike 也能畅玩。

把这篇笔记收藏,下次面试被问到“Unity 怎么做动态寻路”,直接把 Carve 模式、多 Surface、运行时 Bake 甩他脸上,稳。

Demo 工程已上传 GitHub,点个 Star 不迷路 ➜ github.com/yourname/AI-Navigation-Demo
(完)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 19:49:57

云服务器CPU选AMD EPYC还是Intel Xeon更合适?

没有标准答案。 只有适不适合。 在选购云服务器时&#xff0c;CPU是核心中的核心。 AMD EPYC 和 Intel Xeon&#xff0c;两大巨头&#xff0c;各有千秋。 选错&#xff0c;可能多花一半钱&#xff0c;性能还跟不上。 我们来拆解清楚。 一、AMD EPYC&#xff1a;多核性价比…

作者头像 李华
网站建设 2026/5/30 17:08:26

AI智能体分析秘籍:5分钟部署侦测模型,显存不足不再愁

AI智能体分析秘籍&#xff1a;5分钟部署侦测模型&#xff0c;显存不足不再愁 1. 为什么你需要这个解决方案 如果你正在本地运行AI侦测模型&#xff0c;大概率遇到过这些问题&#xff1a; 跑着跑着突然报错"CUDA out of memory"&#xff0c;显存爆炸了调小batch_si…

作者头像 李华
网站建设 2026/6/13 9:49:40

Python模块与包管理:从基础到现代工程实践

Python模块与包管理&#xff1a;从基础到现代工程实践 引言&#xff1a;Python模块化设计的哲学 Python语言之所以能在数据科学、Web开发、自动化运维等领域占据主导地位&#xff0c;其优雅的模块化设计功不可没。模块化不仅是一种代码组织方式&#xff0c;更是Python哲学"…

作者头像 李华
网站建设 2026/5/30 17:06:26

什么是NoF+

文章目录为什么需要NoF&#xff1f;NoF与NoF比有哪些优势NoF的网络架构NoF的关键技术NoF的核心组件全闪存时代背景下&#xff0c;传统的FC&#xff08;Fibre Channel&#xff0c;网状通道&#xff09;存储网络已经无法满足全闪存数据中心的要求&#xff0c;NVMe&#xff08;Non…

作者头像 李华
网站建设 2026/6/10 21:13:57

B 端表单标签对齐指南:兼顾效率与体验的设计选择

表单是 B 端系统的核心交互组件&#xff0c;而表单标签的对齐方式看似微小&#xff0c;却直接影响用户的填写效率、浏览体验和操作流畅度。在 Ant Design、Element UI 等成熟组件库中&#xff0c;行内标签、顶标签、左标签&#xff08;含文字左对齐、右对齐&#xff09;等样式各…

作者头像 李华
网站建设 2026/6/5 20:46:07

没显卡怎么玩AI Agent?预置镜像2块钱体验最新技术

没显卡怎么玩AI Agent&#xff1f;预置镜像2块钱体验最新技术 1. AI Agent是什么&#xff1f;为什么需要GPU&#xff1f; AI Agent&#xff08;人工智能代理&#xff09;就像你的数字助手&#xff0c;它能接收任务、分析环境、执行操作并不断学习优化。想象你有一个24小时待命…

作者头像 李华