

核心特性
* 超大超多地图支持
单个地图尺寸可达 10000×5000 甚至更高,可同时创建成千上万的地图(限制仅依据硬件的内存大小)。内部采用紧凑的 bool[] 和 byte[] 数据结构,避免对象分配,确保 1000 * 1000 的地图内存占用仅约 6 MB。
* 真正的多线程异步寻路
所有寻路计算均在独立工作线程上执行,主线程零阻塞。内置可配置的线程池,自动管理 Worker 实例和内存复用,支持数以万记的并发请求而不会产生 GC 压力。
* O(1) 连通性即时查询
基于并查集的连通区域 ID 系统,在主线程调用 AreConnected() 可以在常数时间内判断任意两个格子是否位于同一可通行区域。无需等待,无需委托,无性能损耗。
* 八方向连通性与方向控制
每个格子可独立设置八个方向的连通/阻隔标志。支持非对称连接(例如 A 可以走向 B,但 B 不能走向 A),完美模拟河流、悬崖、单向门等复杂地形。
* 对角线移动与真实代价
内置八方向 A* 算法,对角线移动代价为 √2,启发式采用 Chebyshev 与 Octile 修正,保证最短路径。预分配数组并使用 searchTag 技术避免重置大数组的开销,进一步降低内存带宽。
* 动态地图与可中断区域重建
地图的可行走性和连接性可运行时修改。通过 RebuildRegionsAsync() 异步重建连通区域,支持 CancellationToken 安全取消,可随时终止旧任务并启动新任务,防止无效计算堆积。支持“合并排队”优化,频繁修改时仅执行最后一次重建,极致降低 CPU 占用。
* 主线程友好的回调分发
寻路结果通过主线程安全的队列自动回调,无需手动调度。所有回调在的 Update 循环中执行,可直接使用 Transform、Debug.Log 等API。
* 完整源码与压力测试工具
提供干净的 C# 源码,无外部依赖,易于定制。
附带 MapBaseTest 测试场景可方便直观地观察寻路结果。
附带 MapStressTest 测试场景,可一键生成 100 张 1000×1000 地图,每秒随机发起数千个寻路请求,帮助您在目标硬件上评估性能。
* 有成熟的商用案例 !
详情参考:https://store.steampowered.com/app/4212170/Fantasy_World/
* 极简灵活的 API 设计,使您可以快速应用进您的项目中
// 创建地图
var map = new GridMap(mapWidth, mapHeight);
// 设置地图格子连通性
public void GridMap.SetConnection(int x, int y, Direction dir, bool connected)
// 同步更新地图(立即更新) / 异步更新地图(不阻塞主线程)
Task GridMap.RebuildRegions() / Task GridMap.RebuildRegionsAsync()
// 提交寻路请求,不阻塞主线程
public PathRequest PathfindingService.EnqueueRequest(GridMap map, int startX, int startY, int goalX, int goalY, Action<PathResult> callback)
// 主线程零成本连通性检查
public bool GridMap.AreConnected(int x1, int y1, int x2, int y2)



