导航网格表面(NavMeshSurface)

Version >= LayaAir 3.2

一、概述

NavMeshSurface(静态导航表面)是LayaAir 3D导航系统中用于生成导航网格的核心组件。它将环境中角色可以行走的表面(地面、平台、斜坡等)转换为多边形网格,为寻路算法提供基础数据。

该组件继承自BaseNavMeshSurface,是3D导航系统实现寻路的主体。导航网格中的数据都是全局静态的,不会随着场景节点的动态变化而更新,如需动态导航网格请使用NavMeshModifileSurface(动态导航表面)组件。

在LayaAir-IDE的属性面板中,该组件显示为静态导航表面

关于3D寻路的整体介绍,请参考3D寻路

二、属性说明

2.1 代理类型 agentType

用于指定在该导航表面上寻路的代理类型。不同类型的代理在寻路时会有不同的特性和限制,如体积大小、移动方式、可通过的区域类型等。

默认值为Humanoid(人形角色)。开发者可以通过选择open Agent Settings打开配置界面,新增自定义的代理类型。

Agent配置页面中的参数用于调节适用该类型Agent的地形,而不是Agent本身:

  • agentName:Agent类型的名称,此处填写的名称将与代理类型处的选项名称一致。
  • agentRadius:Agent在导航过程中与障碍物之间的最小距离。较大的半径会使Agent与障碍物保持更大的距离。
  • agentHeight:Agent能够通过的空间高度。Agent只能在高度大于等于其高度的区域中导航。
  • agentMaxSlope:Agent能够导航的最大斜率角度。超过这个角度的斜坡将被视为不可通过的区域。
  • agentMaxClimb:Agent能够攀爬的最大垂直高度。
  • cellSize:导航网格的单元格大小。较小的值会生成更详细的导航网格,但会增加内存占用和计算成本。
  • cellHeight:导航网格中每个单元格的高度。较小的值会在垂直方向上更精确地导航。
  • tileSize:导航网格的瓦片大小。导航网格可以被划分为多个瓦片,以便在大型场景中更高效地生成和加载导航数据。

2.2 区域标记 areaFlag

用于标记当前导航表面的区域类型,如可行走区域(walk)、水(water)、不可行走区域(unwalk)等。区域标记会影响Agent在寻路时对不同区域的偏好和避让行为。

开发者可以通过点击open Area Settings打开配置界面,新增自定义的区域标记类型。

  • name:区域类型的名称,与区域标记处选项的名称一致。
  • cost:指定Agent在导航时穿越该类型表面的相对代价。较高的值表示通过该表面的代价更高,Agent在寻路时会优先选择cost较低的路径。

2.3 异步烘焙 asyn

表示是否启用异步生成导航网格。当勾选时,导航网格的生成过程将在后台异步进行,不会阻塞主线程。启用异步生成可以保证在游戏运行时每帧只生成一个tile,提高场景加载和编辑的流畅性。

2.4 分区类型 partitionType

用于指定导航网格的分区方式,有三个选项:

  • Monotone(单调分割):生成速度快,占用内存少,适合简单场景。
  • Watershed(流域分割):能更好地适应复杂场景,生成的导航网格更精确自然,但速度较慢、内存消耗较多。
  • Layer(层次分割):按层次结构划分导航网格,适用于需要对不同区域应用不同寻路规则的场景。

2.5 数据 datas

点击Bake NavMesh按钮后,会对所有除动态节点外的可渲染节点及子节点模型进行烘焙。生成的结果(.bin文件)会保存到assets目录下新建的文件夹中(以模型所在场景命名),并自动添加到datas属性中。

注意:如果对场景节点的位置、旋转等进行了修改,都需要重新烘焙节点数据。烘焙出的导航网格不会跟随场景动态改变。数据不可存在预制体中,如果在预制体中拖入场景须重新烘焙数据。

2.6 最大简化误差 maxSimplificationError

定义简化多边形边框时允许的最大误差值,控制导航网格的简化程度。值越大,简化程度越高,性能越好但精确度降低;值越小,导航网格越精确但性能消耗更大。

三、常用API

API 描述
navMesh 获取当前组件的导航网格对象
cleanAllTile() 清除所有导航瓦片
rebuildTile(pos) 重建指定位置处的导航瓦片
boundMin / boundMax 获取导航网格的边界范围
findNavMeshSurface(surfaces, sprite, agentFlags) 静态方法,在节点层级中查找匹配指定代理标记的所有NavMeshSurface组件
Copyright ©Layabox 2026 all right reserved,powered by LayaAir Engine更新时间: 2026-06-02 11:29:27

results matching ""

    No results matching ""