unity学习47:寻路和导航,unity2022后版本如何使用 Navmesh 和 bake
目录
1 寻路和导航对移动的不同
1.1 基础的移动功能
1.1.1 基础移动
1.1.2 智能导航寻路
1.1.3 智能导航寻路还可以
2 如何实现这个效果?
2.1 通过地图网格的形式
2.1.1 警告信息 the static value has been deprecated的对应搜索
2.1.3 bake按钮的位置
2.2.1 unity 2022之前
2.2.1 unity 2022之后
2.3 如果遇到 window / 下面没有AI菜单的情况,解决办法
3 地图测试导航寻路准备
3.1 做一些障碍物 和 楼梯等
4 生成地图网格
4.3 可以设置 多种不同体型的 agent 数据
5 题外话:总结关于一个gameObject在游戏里有多个形象
6 用脚本实现移动时导航效果
6.1 具体内容
6.1.1 获得点击位置
6.1.2实现导航移动
6.2 脚本内容
6.3 报错处理
6.4 测试效果 OK
1 寻路和导航对移动的不同
1.1 基础的移动功能
实测有很多差别
1.1.1 基础移动
- 基础的移动可以朝向点选的地方移动
- 比如可以跳下去等等
1.1.2 智能导航寻路
- 但是导航可以让角色移动的同时,避开障碍物,也就是 智能移动/寻路
- 而且 NaviMesh 上显示非蓝色的区域,角色移动时根本不会往哪走
1.1.3 智能导航寻路还可以
- 判断路径,哪些地方是否可通过
- 可以绕着障碍物走
- 可以实现路径的不同区域的过路成本
2 如何实现这个效果?
2.1 通过地图网格的形式
- unity 2023版本以前,点击右上角的 navigation static 可以
- unity 2023版本以后,这个功能已经被弃用, the static value has been deprecated


2.1.1 警告信息 the static value has been deprecated的对应搜索
- the static value has been deprecated
这个警告信息是Unity中的一个已弃用的警告信息,它意味着你正在使用已经弃用的功能。这个信息是由于 Unity 2023 已经不再使用(Deprecated)
GameObjectUtility.FindOrCreateNavMeshSurfaceAPI来处理生成Navmesh。这个警告信息只是告诉你正在使用过时的 API,但不影响你使用 Navigation 功能。如果你想使用Navigation功能但是不想看到这个报错信息,你可以通过在代码中使用新的API来解决这个问题,具体步骤如下:
1.首先,打开“Window > AI > Navigation”面板,并创建一个新的 NavMesh Surface 组件。
2.然后,将该组件添加到场景中的一个GameObject对象上。
3.在代码中,使用以下代码片段,获取对 NavMeshSurface 组件的引用:
NavMeshSurface navMeshSurface = GetComponent<NavMeshSurface>();4.使用该组件的新 API,即:
navMeshSurface.BuildNavMesh();这样就可以解决该警告信息,并正确地使用 Navigation 功能。
需要注意的是,由于该API已经弃用了,因此无法保证该解决方案在未来版本的 Unity 中是否会继续有效。因此,如果你想保持你的代码是最新的,建议使用最新的文档和API。
2.1.2 新的navigation bake功能
在Unity 2022版本中,导航系统的Bake按钮位置发生了变化,不再直接显示在菜单中,而是通过添加组件的形式进行烘焙。
在Unity 2022版本中,导航系统的Bake按钮位置发生了变化。原来的Bake按钮被替换为在组件上进行烘焙。具体操作如下:
- 选择场景中的静态物体:首先,确定场景中的静态物体(在整个游戏运行过程中不会发生Transform变化的物体),并将其设置为静态物体(勾选static前面的复选框)。
- 添加NavMeshAgent组件:给需要导航移动的物体添加Navmesh Agent组件。
- 组件上烘焙:在组件上通过添加NavMesh组件来实现烘焙功能。具体步骤如下:
- 打开Unity编辑器,进入Window菜单,选择AI -> Navigation。
- 在Navigation界面中,选择Agent Type并设置相关参数。
- 添加NavMesh组件到需要烘焙的物体上,通过组件参数进行烘焙设置12。
通过以上步骤,可以在Unity 2022版本中实现导航系统的烘焙功能,而无需直接使用Bake按钮。这种变化旨在提高工作效率并简化导航系统的使用13。
新版本的导航系统中没有"Bake"按钮,这是因为Unity在2022.1版本中对导航系统进行了改进。在新版本中,导航系统的烘焙过程是自动进行的,无需手动触发。当您对场景进行更改或添加导航代理时,Unity会自动检测并更新导航数据。因此,您无需手动进行烘焙操作,导航系统会自动处理。这样可以提高工作效率并简化导航系统的使用。如果您在使用新版本的Unity时遇到了导航相关的问题,请提供更多详细信息,以便我们能够更好地帮助您解决问题。
2.1.3 bake按钮的位置


2.2 总结 unity2022后版本如何实现Navmesh 的地图 bake烘焙
2.2.1 unity 2022之前
- 选择要烘焙的gameObject 右上角 静态static,然后 Navigation static
- 然后,在windows下打开AI,打开Navigation , 里面有 Navigation agent 和 bake按钮
2.2.1 unity 2022之后
- 玩家角色身上,添加 NavMeshAgent 的component
- 游戏场景里只需要1个物体,比如我这的wall,选择一个NavMeshSurface.包含bake按钮,也在这儿
- 在windows下打开AI,打开Navigation ,里面只有 Navigation agent 、
- 按前面的bake按钮
2.3 如果遇到 window / 下面没有AI菜单的情况,解决办法
- 如果遇到 window / 下面没有AI菜单的情况, 是安装unity时没安装这个功能包。我就遇到了这个问题
- 需要先打开 package manager ,然后,在unity的包下搜索 navigation
- 然后安装下就有了


3 地图测试导航寻路准备
3.1 做一些障碍物 和 楼梯等
- 让地图有些区域不能直接通过,比如加墙阻隔
- 需要通过楼梯,斜坡才能通过

4 生成地图网格
4.1 地图上1个物体添加新的component : nav mesh surface
- 错误:每个需要参与寻路的 gameObject 都增加一个新component : nav mesh agent
- 正确,只需要在场景内的一个gameObject 新建增加一个新component : nav mesh surface即可。 实测不需要每个物体上都添加
- 然后有bake按钮,点击,全部进行了bake


4.2 navigation Agent设置
- 其中 agents 就是指 寻路的主体,依据这个做的寻路是否可以通过
- 也就是说,寻路导航,是为主角player (大小,身高)量身定做的。而其他单位,比如怪物,NPC等不会受到这些寻路的影响。

4.3 可以设置 多种不同体型的 agent 数据
- 多种不同体型的 agent 数据,相当于多个模板
- 具体的不同的游戏内角色,可以选择属于哪个模板agent

然后不同的导航物体,可以选择属于哪一类

4.4 navigation Agent的详细设置


angent的形状,是一个圆柱形的,和 unity编辑器里的一样
而不是看起来的形状

5 题外话:总结关于一个gameObject在游戏里有多个形象
同样1个gameObject
- mesh render 决定的外观看起来什么样,比如外观的形状
- collider决定的碰撞时,此物体的样子,比如也也时胶囊
- angent的形状 决定navigation 寻路导航的这个物体的样子,比如圆柱形
6 用脚本实现移动时导航效果
6.1 具体内容
6.1.1 获得点击位置
- 点击目标点,获得点击点,仍然使用之前的,摄像机射线 ray
Ray ray1=Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray1,out hit))
{
//点击位置
Vector3 point1=hit.point;
6.1.2实现导航移动
- //获取导航代理人
- agent1=GetComponent<NavMeshAgent>();
- agent1.SetDestination(point1);
6.2 脚本内容
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;public class TestNavMeshAgent : MonoBehaviour
{private NavMeshAgent agent1;// Start is called before the first frame updatevoid Start(){//获取导航代理人agent1=GetComponent<NavMeshAgent>();}// Update is called once per framevoid Update(){//如果点击鼠标左键 if (Input.GetMouseButtonDown(0)){Ray ray1=Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;if(Physics.Raycast(ray1,out hit)){//点击位置Vector3 point1=hit.point;//agent1.SetDestination(point1);}}}
}
6.3 报错处理
- 测试时,遇到这个,我没更新,点了X


6.4 测试效果 OK
- 可以实现智能寻路效果
- 和按键移动的差别,按键移动可以从墙上跳下到对面去
- 但是点击移动,摄像机射线这种方法,角色在墙上也无法移动到对面

相关文章:
unity学习47:寻路和导航,unity2022后版本如何使用 Navmesh 和 bake
目录 1 寻路和导航对移动的不同 1.1 基础的移动功能 1.1.1 基础移动 1.1.2 智能导航寻路 1.1.3 智能导航寻路还可以 2 如何实现这个效果? 2.1 通过地图网格的形式 2.1.1 警告信息 the static value has been deprecated的对应搜索 2.1.2 新的navigation ba…...
跟着李沐老师学习深度学习(十二)
循环神经网络 序列模型 序列数据 实际中很多数据是有时序结构的 比如:电影的评价随时间变化而变化 拿奖后评分上升,直到奖项被忘记看了很多好电影后,人们的期望变高季节性:贺岁片、暑期档导演、演员的负面报道导致评分变低 核心思想&#…...
深入解析NoSQL数据库:从文档存储到图数据库的全场景实践
title: 深入解析NoSQL数据库:从文档存储到图数据库的全场景实践 date: 2025/2/19 updated: 2025/2/19 author: cmdragon excerpt: 通过电商、社交网络、物联网等12个行业场景,结合MongoDB聚合管道、Redis Stream实时处理、Cassandra SSTable存储引擎、Neo4j路径遍历算法等42…...
MyBatis 中 SqlMapConfig 配置文件详解
精心整理了最新的面试资料,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 configuration:包裹所有配置标签,是整个配置文件的顶级标签。 properties:属性,该标签可以引入外部配置的属性ÿ…...
STM32物联网终端实战:从传感器到云端的低功耗设计
STM32物联网终端实战:从传感器到云端的低功耗设计 一、项目背景与挑战分析 1.1 物联网终端典型需求 (示意图说明:传感器数据采集 → 本地处理 → 无线传输 → 云端存储) 在工业物联网场景中,终端设备需满足以下核心需…...
SQLite Select 语句详解
SQLite Select 语句详解 SQLite 是一个轻量级的数据库管理系统,以其简洁的设计和高效的性能被广泛应用于各种场景。在 SQLite 中,SELECT 语句是用于查询数据库中的数据的命令。本文将详细介绍 SQLite 的 SELECT 语句,包括其基本语法、常用功…...
[实现Rpc] 客户端划分 | 框架设计 | common类的实现
目录 3. 客户端模块划分 3.1 Network模块 3.2 Protocol模块 3.3 Dispatcher模块 3.4 Requestor模块 3.5 RpcCaller模块 3.6 Publish-Subscribe模块 3.7 Registry-Discovery模块 3.8 Client模块 4. 框架设计 4.1 抽象层 4.2 具象层 4.3 业务层 ⭕4.4 整体设计框架…...
【SFRA】笔记
GK_SFRA_INJECT(x) SFRA小信号注入函数,向控制环路注入一个小信号。如下图所示,当前程序,小信号注入是在固定占空比的基础叠加小信号,得到新的占空比,使用该占空比控制环路。 1.2 GK_SFRA_COLLECT(x, y) SFRA数据收集函数,将小信号注入环路后,该函数收集环路的数据,以…...
基于Python的Diango旅游数据分析推荐系统设计与实现+毕业论文(15000字)
基于Python的Diango旅游数据分析推荐系系统设计与实现毕业论文指导搭建视频,带爬虫 配套论文1w5字 可定制到某个省份,加40 基于用户的协同过滤算法 有后台管理 2w多数据集 可配套指导搭建视频,加20 旅游数据分析推荐系统采用了Python语…...
为什么docker 容器有的没有PORTS
容器的 PORTS 列没有显示端口映射信息,而 sonatype/nexus3:3.77.1 容器有显示,可能是由以下几个原因导致的: 1. --networkhost 参数的使用 正如前面提到的,当你使用 --networkhost 参数运行容器时,容器会直接使用宿主…...
国自然青年基金|针对罕见神经上皮肿瘤的小样本影像深度数据挖掘关键技术研究|基金申请·25-02-15
小罗碎碎念 今天和大家分享一个国自然青年基金项目,执行年限为2021.01~2023.12,直接费用为24万元。 该项目聚焦罕见神经上皮肿瘤小样本影像深度数据挖掘技术,致力于攻克小样本数据和临床经验缺乏带来的难题。项目围绕影像规范化、…...
《解锁自然语言处理:让公众正确拥抱AI语言魔法》
在当今数字化浪潮中,自然语言处理(NLP)技术作为人工智能领域的璀璨明珠,正以惊人的速度融入我们的生活。从智能语音助手到智能客服,从机器翻译到内容创作辅助,NLP技术无处不在。然而,如同任何强…...
算法刷题-哈希表的总结
什么时候用数组、什么时候用map呢? 经常会混淆。 混淆1:例如有时候题目可能要求在一大堆元素里找目标元素,要求不能利用用过的字母,这就会让我想到只包含一个键值的set或者是map,但实际上忽略了字母(限定大…...
单细胞转录组画小提琴VlnPlot只显示需要类型细胞
探序基因肿瘤研究院 整理 在R语言中,单细胞转录组数据画小提琴图中,我们如果想只展示出需要的特定细胞类型,可以把这需要展示的细胞类型单独构建成一个Seurat对象,再画图。 例如我们在Seurat对象中的meta.data表格中,…...
Linux 网络安全技巧
网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linux的源码是开放的,有成千上万的志愿者会立刻发现并修补它。本文旨在介绍用来增强你的…...
泰山派RK3566移植QT,动鼠标时出现屏幕闪烁
总结: 交叉编译到 泰山派rk3566跑调海康摄像头的qt应用程序失败了。 X11无效窗口。 移植QT注意 屏幕分辨率不要改。改了执行QT的时候,framebuffer识别不出设备。 命令行安装QT-Creator sudo install 类似的指令安装Qt-Creator时,可能找不到编…...
Windows桌面系统管理7:国产操作系统与Linux操作系统
Windows桌面系统管理0:总目录-CSDN博客 Windows桌面系统管理1:计算机硬件组成及组装-CSDN博客 Windows桌面系统管理2:VMware Workstation使用和管理-CSDN博客 Windows桌面系统管理3:Windows 10操作系统部署与使用-CSDN博客 Wi…...
百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用
在私有云环境中成功部署 DeepSeek 满血版并实现性能调优,并不是一件容易的事情。选择合适的 GPU 配置、安装相应的环境、成功部署上线业务、加速推理任务加速、支撑多用户并发 …… 完成业务测试,成功融入生产业务中。 为了帮助企业快速实现 DeepSeek 服…...
解锁 AIoT 无限可能,乐鑫邀您共赴 Embedded World 2025
2025 年 3 月 11-13 日,全球规模最大的嵌入式展览会——Embedded World 2025 将在德国纽伦堡盛大开幕。作为物联网和嵌入式技术领域的领先企业,乐鑫信息科技 (688018.SH) 将展示在 AI LLM、HMI、双频 Wi-Fi 6、低功耗 MCU 和 Matter 等领域的最新技术及解…...
LlamaFactory可视化模型微调-Deepseek模型微调+CUDA Toolkit+cuDNN安装
LlamaFactory https://llamafactory.readthedocs.io/zh-cn/latest/ 安装 必须保证版本匹配,否则到训练时,找不到gpu cuda。 否则需要重装。下面图片仅供参考。因为cuda12.8装了没法用,重新搞12.6 cudacudnnpytorch12.69.612.6最新…...
【GPT】从GPT1到GPT3
every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 从GPT1 到GPT3 1. GPT1 论文: https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/lan…...
openGauss 3.0 数据库在线实训课程18:学习视图管理
前提 我正在参加21天养成好习惯| 第二届openGauss每日一练活动 课程详见:openGauss 3.0.0数据库在线实训课程 学习目标 掌握openGauss视图的管理:创建视图、删除视图、查询视图的信息、修改视图的信息。 课程作业 1.创建表,创建普通视图…...
基于flask+vue的租房信息可视化系统
✔️本项目利用 python 网络爬虫抓取某租房网站的租房信息,完成数据清洗和结构化,存储到数据库中,搭建web系统对各个市区的租金、房源信息进行展示,根据各种条件对租金进行预测。 1、数据概览 将爬取到的数据进行展示ÿ…...
手写简易RPC(实践版)
首先了解rpc rpc-远程过程调用,openFeign,Dubbo都可以算作rpc,以微服务来具体说明,就是在本地不需要去发送请求,通过rpc框架,像调用本地方法一样调用其他服务的方法,本质上还是要经过网络&…...
mysql学习笔记-多版本并发控制
1、什么是ReadView 在 MVCC机制中,多个事务对同一个行记录进行更新会产生多个历史快照,这些历史快照保存在 Undo Log里。如果一个事务想要查询这个行记录,需要读取哪个版本的行记录呢?这时就需要用到 ReadView 了,它帮我们解决了…...
问题记录汇总
记录一些问题 如何分析错误帧问题-CSDN博客...
算法日记20:SC72最小生成树(prim朴素算法)
一、题目: 二、题解 2.1:朴素prim的步骤解析 O ( n 2 ) O(n^2) O(n2)(n<1e3) 0、假设,我们现在有这样一个有权图 1、我们随便找一个点,作为起点开始构建最小生成树(一般是1号),并且存入intree[]状态数组中…...
requests.exceptions.JSONDecodeError: Expecting value: line 2 column 1 (char 1)
requests.exceptions.JSONDecodeError: Expecting value: line 2 column 1 (char requests.exceptions.JSONDecodeError 是 Python 中使用 requests 库进行 HTTP 请求时,当期望返回的响应体为 JSON 格式,但实际响应体不符合 JSON 格式时出现的错误。这个…...
Redis7——基础篇(五)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...
spring boot知识点1
1.什么是spring boot spring boot是spring框架的子项目,主要特点是自动配置,以及内置的tomcat服务器,适合快速开发web与微服务架构 2.spring boot和spring cloud俩者之间的联系 spring boot可单独运行, spring cloud则是用于多…...
