2D导航网格表面(NavMesh2DSurface)

一、概述

NavMesh2DSurface(2D导航网格表面)是LayaAir 2D导航系统中用于生成导航网格的核心组件。它定义了导航网格,表示角色可以在其中移动的2D区域。

该组件继承自BaseNavMeshSurface,是2D导航系统实现寻路的主体。在LayaAir-IDE的属性面板中,该组件显示为2D导航网格表面

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

二、属性说明

2.1 代理类型 agentType

用于指定在该导航表面上寻路的代理类型。默认值为Humanoid(人形角色)。

开发者可以通过选择open Agent Settings打开配置界面,新增自定义的代理类型。Agent配置页面中的参数用于调节适用该类型Agent的地形:

  • agentName:Agent类型的名称。
  • agentRadius:Agent在导航过程中与障碍物之间的最小距离。
  • cellSize:导航网格的单元格大小。较小的值会生成更详细的导航网格,但会增加内存占用和计算成本。
  • tileSize:导航网格的瓦片大小。导航网格可以被划分为多个瓦片,以便更高效地生成和加载导航数据。

2.2 区域标记 areaFlag

用于标记当前导航表面的区域类型。通过设置不同的区域标记和代价值(cost),可以控制代理在导航时对不同区域的偏好和避让行为。

2.3 异步生成 asyn

表示是否启用异步生成导航网格。启用后导航网格的生成过程在后台异步进行,每帧只生成一个tile,不会阻塞主线程。

2.4 分区类型 partitionType

用于指定导航网格的分区方式:

  • Monotone(单调分割):生成速度快,占用内存少,适合简单场景。
  • Watershed(流域分割):更精确自然,适用于复杂场景,但速度较慢。
  • Layers(层次分割):适用于需要对不同区域应用不同寻路规则的场景。

2.5 数据 datas

点击Bake按钮后,弹出烘焙面板,从层级面板中选择要烘焙的子节点拖入烘焙面板中进行烘焙。烘焙面板中的参数:

  • Active:该节点是否参与导航网格的生成。
  • Bake From:烘焙数据来源,支持Graphics(图形数据)、Physics(物理碰撞器数据)、MeshRender(网格数据)和None四种方式。

生成的结果(.bin文件)会保存到assets目录下,并自动添加到datas属性中。

注意:场景节点发生位置、旋转等变化后需要重新烘焙。数据不可存在预制体中,如果在预制体中拖入场景须重新烘焙数据。

2.6 最大简化误差 maxSimplificationError

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

2.7 凸多边形区域 volumes

用于在某片区域内修改导航网格属性,设置后不需要重新烘焙。每个区域可设置位置(Position)、缩放(Scale)、旋转(Rotation)、区域标记(AreaFlag)和形状数据(Datas)。

2.8 障碍物 obstacles

用于表示寻路过程中的障碍物区域,支持box、cycle、mesh三种类型。设置后不需要重新烘焙即可改变导航网格。

用于连接两个不同导航网格表面,可设置区域标记(AreaFlag)、起始点(Start)、终点(End)、宽度(Width)和是否双向(Bidirectional)。

三、常用API

API 返回类型 描述
obstacles NavMesh2DObstacles[] 获取或设置修改导航网格表面的障碍物列表
areas NavMesh2DModifierArea[] 获取或设置导航网格表面的修改区域列表
navMeshLink NavMesh2DLink[] 获取或设置导航网格表面上的链接列表
Copyright ©Layabox 2026 all right reserved,powered by LayaAir Engine更新时间: 2026-06-02 11:29:26

results matching ""

    No results matching ""