创建 NavGraph

您可以通过添加自定义 NavGraph 来增强为地形创建的 NavMesh。通常,这些 NavGraph 的放置在游戏关卡的设计中是隐含的。在这种情况下,可在 NavData 生成过程中(通常是在为关卡生成 NavMesh 后执行的后期处理阶段)创建 NavGraph。但您也可以在运行时动态地创建和生成 NavGraph。例如,如果希望游戏中的 NPC 能够使用可移动到任意位置的梯子,则可能需要使用该方法。

构建 NavGraph

可使用 NavGraphBlobBuilder 对象生成 NavGraph,如下所示:

  1. 创建 NavGraphBlobBuilder 类的新实例,并使用其方法添加顶点和边。
  2. 创建新的 NavData 对象来保留 NavGraph。
  3. 通过调用 NavData::AddNavGraph() 方法并将 NavGraphBlobBuilder 作为参数进行传递,将新 NavGraph 添加到 NavData

请注意,可将多个 NavGraph 添加到同一个 NavData 对象中。但是,无法将 NavGraph 添加到已包含 NavMesh 的 NavData 对象,或者已添加到数据库中的 NavData 对象。

在数据生成期间创建

如果在数据生成过程中创建 NavGraph,应打包新 NavData 对象,其方式与打包数据生成系统自动创建的 NavData 对象相同。

在运行时创建

如果在运行时动态创建 NavGraph,只需使用与包含预生成数据的 NavData 对象的相同方式将 NavData 对象添加到数据库

调用 NavData::AddToDatabaseImmediate()NavData::AddToDatabaseAsync()

示例

有关显示如何在数据生成过程的后期处理阶段创建 NavGraph 的代码示例,请参见 Tutorial_Generation_postProcess.cpp 文件。

有关显示如何动态创建和添加 NavGraph 的代码示例,请参见 Tutorial_NavTag.cpp 文件。