# 从导航系统中期待什么

首先，在我们探索 **Unreal 导航系统**之前，定义我们对通用导航系统的期望是有用的。导航系统需要做到以下几点：

* 它需要确定在地图上的两个通用点之间是否存在路径（可以被执行查询的代理穿越）
* 如果存在这样的路径，返回对代理最方便（通常是最短）的路径

然而，在寻找最佳路径时，有许多方面需要考虑。一个好的导航系统不仅应该考虑这些因素，还应该在相对短的时间内执行查询。其中一些方面如下：

* AI代理在执行查询时是否能够通过地图的特定部分？例如，可能有一个湖泊，而AI角色可能不知道如何游泳。同样，代理能否爬过并进入通风隧道？
* AI代理可能希望避免（或偏好）某些路径，这些路径并不一定是最短的。例如，如果建筑物着火，代理应该试图避免这一点，或者冒被烧伤的风险。再举一个例子，如果说有两条路径：一条被敌人的火力覆盖，但很长，而另一条很短但暴露在敌人火力下；那么AI应该选择哪一条呢？虽然这可能是决策过程的一部分，但一些启发式可以在寻路层面上实现，导航系统应该支持这些启发式。
* 地图可能是动态的，这意味着障碍物、物体、道路、悬崖等在游戏过程中会发生变化。导航系统能否处理这些变化，并在它们发生时实时纠正生成的路径？

现在，是时候看看Unreal是如何实现所有这些特性的了。
