详解Unity中的Nav Mesh新特性|导航寻路系统 (三)
前言
通过前面两篇的介绍与讲解我们已经对新版NavMesh有了一个基础的了解和使用,本篇我们继续讲解剩余的两个组件NavMeshModifier、NavMeshModifierVolume,这两个组件是主要是用于影响导航网格的生成的。所以内容不是很主要,但也非常重要。
本系列提要
Unity新版NavMesh专题博客共分成三篇来讲解: 【本篇为第三篇】 第一篇():新版NavMesh安装使用与概述 第二篇():详解NavMeshSurface、NavMeshLink组件的参数和应用 第三篇():详解NavMeshModifier、NavMeshModifierVolume组件的参数和应用
Unity版本[2019.4.10f1] 梦小天幼 & 禁止转载
视频讲解:
一、NavMeshModifier组件
该组件用于在运行时调整特定游戏对象在导航网格烘焙期间的行为方式 注意,本组件的最大作用是运行时烘焙,同时这也是新版NavMesh最具亮点的功能之一,它弥补了旧版系统对于性能消耗的无力感。
参数
影响范围
按层次结构来影响游戏对象,也就是说该组件附加的对象以及其所有子对象都会被影响。
如果子对象中也发现了该组件,则子对象的组件设置会覆盖更上方的组件,也会影响自身子对象。
动态烘焙
当AI走到特定位置,触发逻辑,于是重新烘焙场景
逻辑步骤:
搭建好场景,分成两个部分,编辑器烘焙部分、运行时烘焙部分
编辑器烘焙部分保证游戏一开始AI就能够寻路,运行时烘焙部分则为了节省性能,只能当AI需要进入某个房间时,这个房间的内容才会被显示,路径才会被烘焙
其关键部分在于在进入场景前的位置放置一个触发器,一旦有AI触发,则显示场景,且重新烘焙场景
主要代码
// 关键部分就两句代码,当触发逻辑时,重新烘焙“所有”场景,同时删除旧的烘焙数据 //using Unity.AI.Navigationo 命名空间是这个(o゚v゚)ノ public NavMeshSurface navOut; public NavMeshSurface navIn; private void Start() { navIn.BuildNavMesh(); navOut.RemoveData(); }
二、NavMeshModifierVolume组件
该组件根据特定体积来影响NavMesh区域类型的网格生成
参数
影响范围
该组件的影响范围跟父级子级毫无关系,只影响体积范围内的物体
三、总结和参考资料
1.总结
这里有一张图片,是有关NavMesh系统的全局总结图,但懒得画,先占坑hh
2.参考资料
[1].Unity官方. [2].Unity官方.