[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培


参考资料1,里面有 相关 的 教程 。

通常 使用以前 的烘培,需要 把物体 变成 静态 物体,现在 UNITY 升级后 使用 相关的组件 可以动态自动烘培 



----------------------------------------建立复制 的地形,一键烘培 使用 navMeshSurface

Roads物体添加NavMeshSurface.cs组件,就可以自动烘培了(使用的模型是 Unity 的AssetStore 的simple town lite- cartoon assets)

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第1张图片


下载 压缩包,解压后,在如下图所示的位置,复制NavMeshSurface.cs 到工程的文件内,即可添加组件。

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第2张图片


把如下图所示的文件复制粘贴 ,即可正常使用


----------------------------------------还是同上的模型,固定范围内动态自动烘培


UNITY 菜单栏 Window-- Navigation 

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第3张图片


一般进行烘培需要对 Navigation 视图的 Scene Filter 和 Navigation Static 进行设置。然后进行烘培

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第4张图片[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第5张图片


现在可以固定范围内动态自动烘培

对道路 的预制体 添加如下 2个组件MeshCollider(不一定) 和NavMeshSource Tag(必备)

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第6张图片


找到 道路 的预制体 的 Mesh

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第7张图片


对 道路 的 Mesh 进行如下图所示的设置(貌似,一定要对 道路 的Mesh 进行如下设置,才可以动态 烘培)

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第8张图片

(Read/Write Enabled必备)


如果没有对上面 的 道路 的 模型 的Mesh 进行 如上图所示的设置,就会出现如下图所示的错误。

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第9张图片[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第10张图片

RuntimeNavMeshBuilder: Source mesh road_straight_mesh does not allow read access. This will work in playmode in the editor but not in player
UnityEngine.AI.NavMeshBuilder:UpdateNavMeshData(NavMeshData, NavMeshBuildSettings, List`1, Bounds)
LocalNavMeshBuilder:UpdateNavMesh(Boolean) (at Assets/Examples/Scripts/LocalNavMeshBuilder.cs:56)
LocalNavMeshBuilder:OnEnable() (at Assets/Examples/Scripts/LocalNavMeshBuilder.cs:38)


运行前,没有自动烘培


[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第11张图片


点击运行后,就 可以在固定范围内 自动烘培。在 Navigation 视图下,可以看到是 自动烘培的


[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第12张图片


----------------------------------------在固定的范围内 自动烘培

(模型来自 unity asset store 的poly city - free cartoon pack)

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第13张图片

对地形 添加 如下图所示的2个组件,Local NavMesh Builder和Nav Mesh Source Tag

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第14张图片


如果对 地形 panel 进行移动,烘培的 面积还是固定不变的

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培_第15张图片


----------------------------------------参考资料1,里面的内容

运行时NavMesh构建的组件

这里我们介绍导航系统的四个组件:
NavMeshSurface - 用于构建和启用一个代理类型的导航网格表面。
NavMeshModifier - 根据变换层次结构影响navmesh区域类型的navmesh生成。
NavMeshModifierVolume - 根据体积影响navmesh区域类型的navmesh生成。
NavMeshLink - 为一个代理类型连接相同或不同的导航网格表面。
这些组件包含用于在运行时构建和使用NavMeshes的高级控件以及编辑时间。


文件(草案)

https://docs.google.com/document/d/1usMrwMHTPNBFyT1hZRt-nQZzRDTciIQRVzmA7MQsFNw

如何开始:
下载并安装Unity 5.6的最新版本。

克隆或下载此存储库并使用功能构建打开项目。或者,您可以将Assets / NavMeshComponents的内容复制到现有项目。

“资源/示例”文件夹中提供了其他示例。这些例子是“按原样”提供的。它们既不是通用的,也不是强大的,而是作为灵感。

注意:在测试周期中,功能和API可能会发生变化。在使用前备份现有的项目。确保在使用此版本打开之前备份现有的项目。


常问问题:

问:我可以在运行时烤navmesh吗?
A:是的

问:我可以将navmesh'es用于多个代理商尺寸吗?
A:是的

问:我可以在预制中加入导航网格吗?
答:是的 - 有一些限制。

问:我如何连接两个navmesh表面?
答:使用NavMeshLink连接双方

问:我如何查询navmesh一个特定大小的代理?
答:查询导航网格时使用NavMeshQuery过滤器

问:与“DefaultExecutionOrder”属性有什么关系?
答:它提供了一种控制脚本执行顺序的方法 - 具体来说,它允许我们在(本机)导航元素启用之前构建一个导航网格。

问:新委托“NavMesh.onPreUpdate”有什么用?
答:它允许您在本机端调用导航更新循环之前,控制navmesh数据和链接。

问:我可以移动NavMesh平台吗?
答:不需要 - 持续移动代理商的平台需要新的API。

问:OffMeshLink现在已经过时了吗?
答:不 - 您仍然可以使用OffMeshLink - 但是您会发现NavMeshLink更灵活,开销更少。

问:HeightMesh和Auto Generated OffMeshLinks发生了什么?
答:他们不支持在新的navmesh建设功能。 HeightMesh将会在某个时候添加。自动OffMeshLink生成可能会被一个解决方案所取代,从而更好地控制位置。

----------------------------------------









----------------------------------------

参考资料:

1.

NavMeshComponents

2.

What's New in Unity 5.6 - Update to Nav Mesh (1/2)

3.

[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培更新2018

4.






[Unity][NavMesh]Unity NavMesh Compent 寻路组件动态自动烘培更新2018

你可能感兴趣的:(Unity,NavMesh,Unity教程,Unity经验,unity3d,免费,动态自动烘培)