GKGraph GKGraphNode GKGridGraphNode,他们是什么关系?

GKGraph GKGraphNode GKGridGraphNode, what's relationship for them?

文档我看了,还是一头雾水,哪位大侠能给我解释清楚,e.g.any图片对比?谢谢。

关于 Pathfinding 的维基百科文章可能会有所帮助,从那里链接的图形和图形搜索算法的相关主题也可能有所帮助。除此之外,这是一个快速解释的尝试。

节点是某人可以去的地方,它们与其他节点的连接定义了某人可以在不同地方之间旅行。一组(连接的)节点一起形成一个图。

GKGraphNode 是节点的最一般形式——这些节点不知道它们在 space 中的位置,只知道它们与其他节点的连接。 (这对于基本的寻路来说已经足够了,但是......如果你有一个图,其中 A 连接到 B 并且 B 连接到 C,那么从 A 到 C 的路径通过 B 而不管这些节点位于何处,如下所示。)

GKGraph 是节点的集合,并提供将图形作为一个整体工作的函数,如 the important one for finding paths.

GKGridGraphNodeGKGraphNode2DGKGraphNode 的特殊版本,它们增加了节点在 space 中的位置知识——整数网格 space(如棋盘)或打开 2D space。添加此类信息后,包含此类节点的 GKGraph 可以在寻路时考虑距离。

例如,看这张图片:

如果我们只使用 GKGraphNode,我们所谈论的只是哪些节点连接到哪些节点。因此,如果我们要求从 A 到 D 的最短路径,我们可以得到 ACDABD,因为无论哪种方式,连接数都是相等的.但是如果我们使用 GKGridGraphNodeGKGraphNode2D,我们正在查看节点之间的线的长度,在这种情况下 ACD 是最短路径。

一旦你开始在(某种坐标)space 中定位你的节点,它有助于能够在 space 中作为一个整体对图进行操作。这就是 GKGridGraphGKObstacleGraph 进来的地方。

  • GKGridGraphGKGridGraphNodes 一起使用,让您可以创建图表来填充一组维度(例如,10x10 网格,允许对角线移动),而不是让您创建并自己连接一堆节点。
  • GKObstacleGraph 通过让您将区域标记为不可逾越的障碍物并自动管理节点和连接以绕过障碍物,为自由 2D-space 图形添加了更多内容。

希望这对您有所帮助。更多信息,除了显示这些东西如何工作的 reference docs and guide, Apple also has a WWDC video