跳转至

GFGraphMath

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/foundation/math/gf_graph_math.gd
  • 模块:Standard
  • 继承:RefCounted
  • API:public
  • 类别:运行时服务 (runtime_service)
  • 首次版本:3.17.0

面向任意节点类型的纯图搜索算法。 节点可以是 Vector、StringName、Resource、对象引用或项目自定义值。 图结构由回调提供,框架只负责遍历、代价累计和路径重建。

成员概览

类型 名称 签名
方法 find_path_dijkstra static func find_path_dijkstra( start: Variant, goal: Variant, get_neighbors: Callable, get_step_cost: Callable = Callable() ) -> Array[Variant]:
方法 find_path_a_star static func find_path_a_star( start: Variant, goal: Variant, get_neighbors: Callable, get_step_cost: Callable = Callable(), heuristic: Callable = Callable() ) -> Array[Variant]:
方法 build_distance_map static func build_distance_map( start: Variant, get_neighbors: Callable, get_step_cost: Callable = Callable(), max_cost: float = INF ) -> Dictionary:
方法 find_reachable static func find_reachable( start: Variant, max_cost: float, get_neighbors: Callable, get_step_cost: Callable = Callable() ) -> Dictionary:

方法

find_path_dijkstra

  • API:public
static func find_path_dijkstra( start: Variant, goal: Variant, get_neighbors: Callable, get_step_cost: Callable = Callable() ) -> Array[Variant]:

使用 Dijkstra 查找一条最低代价路径。

参数:

名称 说明
start 起点节点。
goal 终点节点。
get_neighbors 邻居回调,签名为 func(node: Variant) -> Array
get_step_cost 可选代价回调,签名为 func(from: Variant, to: Variant) -> float;返回负数表示不可通行。

返回:包含起点与终点的路径;无法到达时返回空数组。

结构:

  • start: Variant graph node identity.
  • goal: Variant graph node identity.
  • return: Array graph node path from start to goal.

find_path_a_star

  • API:public
static func find_path_a_star( start: Variant, goal: Variant, get_neighbors: Callable, get_step_cost: Callable = Callable(), heuristic: Callable = Callable() ) -> Array[Variant]:

使用 A* 查找一条低代价路径。

参数:

名称 说明
start 起点节点。
goal 终点节点。
get_neighbors 邻居回调,签名为 func(node: Variant) -> Array
get_step_cost 可选代价回调,签名为 func(from: Variant, to: Variant) -> float;返回负数表示不可通行。
heuristic 可选启发回调,签名为 func(node: Variant, goal: Variant) -> float

返回:包含起点与终点的路径;无法到达时返回空数组。

结构:

  • start: Variant graph node identity.
  • goal: Variant graph node identity.
  • return: Array graph node path from start to goal.

build_distance_map

  • API:public
static func build_distance_map( start: Variant, get_neighbors: Callable, get_step_cost: Callable = Callable(), max_cost: float = INF ) -> Dictionary:

从起点生成距离图。

参数:

名称 说明
start 起点节点。
get_neighbors 邻居回调,签名为 func(node: Variant) -> Array
get_step_cost 可选代价回调,签名为 func(from: Variant, to: Variant) -> float;返回负数表示不可通行。
max_cost 最大累计代价,超过后停止扩展。

返回:字典,键为可达节点,值为从起点到该节点的最低代价。

结构:

  • start: Variant graph node identity.
  • return: Dictionary mapping reachable graph nodes to lowest float costs.

find_reachable

  • API:public
static func find_reachable( start: Variant, max_cost: float, get_neighbors: Callable, get_step_cost: Callable = Callable() ) -> Dictionary:

查找指定代价内可达的节点。

参数:

名称 说明
start 起点节点。
max_cost 最大累计代价。
get_neighbors 邻居回调,签名为 func(node: Variant) -> Array
get_step_cost 可选代价回调,签名为 func(from: Variant, to: Variant) -> float;返回负数表示不可通行。

返回:字典,键为可达节点,值为从起点到该节点的最低代价。

结构:

  • start: Variant graph node identity.
  • return: Dictionary mapping reachable graph nodes to lowest float costs.