Version: 2020.2
Experimental: this API is experimental and might be changed or removed in the future.

NavMeshQuery

struct in UnityEngine.Experimental.AI

切换到手册

描述

用于在 NavMeshWorld 中执行导航操作的对象。

NavMesh 相关结构中的操作相反,可以在作业(IJobIJobParallelFor)内执行 NavMeshQuery 操作。

要获取导航网格上两个位置之间的路径,必须使用大于 0 的 pathNodePoolSize 值创建查询,并且需要按顺序调用以下方法:/BeginFindPath/、/UpdateFindPath/(必要时反复调用)、/EndFindPath/、/GetPathResult/。这些方法依赖于在 NavMeshQuery 中存储一些状态数据,但所有其他方法都不会更改对象的状态,并且可以随时调用。

在 Editor 中执行时,如果任何参数无效,则所有方法都会抛出异常。

注意:NavMeshQuery 的预期功能集还没有完全完成。

构造函数

NavMeshQuery创建 NavMeshQuery 对象并分配内存以存储导航网格节点信息(如果需要)。

公共函数

BeginFindPath在导航网格上的两个位置之间启动寻路操作。
CreateLocation`返回用户提供的位置和多边形的有效 NavMeshLocation。
Dispose销毁 NavMeshQuery 并释放它使用的所有内存。
EndFindPath获取在成功的 NavMeshQuery.UpdateFindPath 操作期间计算的路径中的节点数量。
GetAgentTypeIdForPolygon返回为导航网格烘焙的或已经配置链接的代理类型的标识符。
GetEdgesAndNeighbors获取给定 node 的顶点以及它连接到的所有导航节点的标识符。
GetPathResult复制到提供的数组中,这是构成通过 NavMeshQuery 操作找到的路径的导航网格节点的列表。
GetPolygonType返回导航网格节点是多边形还是链接。
GetPortalPoints获取两个相邻导航网格节点共有线段的端点。
IsValid如果指定 PolygonId 引用的节点在导航网格中处于活动状态,则返回 true。
MapLocation针对给定世界位置,找到导航网格上最近的点和 PolygonId。
MoveLocation将导航网格位置移动到另一个位置,且不会与表面失去接触。
MoveLocations将一系列导航网格位置移动到其他位置,且不会与表面失去接触。
MoveLocationsInSameAreas将一系列导航网格位置移动到其他位置,且不会与表面失去接触,并为所有位置给定一个公共区域过滤器。
PolygonLocalToWorldMatrix返回包含指定导航网格节点 (Read Only) 的导航网格表面的变换矩阵。
PolygonWorldToLocalMatrix返回包含指定导航网格节点 (Read Only) 的导航网格表面的反向变换矩阵。
Raycast在导航网格上的两点之间找出一条线。
UpdateFindPath继续进行正在进行的路径搜索。