跳转至

任意拓扑图搜索

GFGraphMath 面向任意节点类型的图搜索。它不要求节点必须是格子坐标:StringNameVector2iResource、对象引用或项目自定义值都可以作为节点,只要邻居和代价由回调返回即可。

适合对话跳转、技能依赖、地图连接、任务拓扑、资源生产链等“不是规则网格”的路径/可达性问题。

var path := GFGraphMath.find_path_a_star(
    start_node,
    goal_node,
    func(node):
        return graph.get(node, []),
    func(from_node, to_node):
        return edge_costs.get([from_node, to_node], 1.0),
    func(node, goal):
        return estimated_costs.get(node, {}).get(goal, 0.0)
)

var reachable := GFGraphMath.find_reachable(
    start_node,
    5.0,
    func(node):
        return graph.get(node, [])
)

get_step_cost() 返回负数时表示该边不可通行;启发函数为空时 A* 会退化为 Dijkstra。

GF 不缓存图,也不维护节点生命周期,避免把项目的业务拓扑绑定进框架。