Unity 6.3
0 онлайн 49 гостей 3 в системе
Вход

NavMeshBuildSettings.preserveTilesOutsideBounds

Declaration

public bool preserveTilesOutsideBounds;

Описание

Указывает, следует ли оставлять NavMesh неизменным в разделах за пределами границ сборки во время обновления NavMesh.

Если это свойство включено, NavMesh обновление пересчитывает только NavMesh плитки, которые полностью находятся внутри указанных локальных границ. Все другие плитки, такие как те, которые полностью находятся вне границ или те, которые только частично пересекают их, остаются неизменными. Unity восстанавливает пересчитанные плитки как обычно из предоставленных NavMeshBuildSource объектов.

Значение по умолчанию — false, что означает, что все плитки восстанавливаются во время NavMesh обновления независимо от того, находятся ли они в пределах границ.

Это свойство полезно, когда вам нужно обновить NavMesh в ограниченном объеме во время выполнения без влияния на остальную часть NavMesh. Используйте это свойство для удаления плиток в определенной области. Unity удаляет любую плитку внутри границ, которая не имеет перекрывающихся источников.

Пространственные измерения NavMesh плитка равна tileSize умноженное на voxelSize. Положение в мире источника сетки плиток зависит от позиций и вращения, использованных для построения, а затем для инстанционирования NavMeshData. Границы перешли к NavMeshBuilder.UpdateNavMeshData или NavMeshBuilder.UpdateNavMeshDataAsync находятся в локальном пространстве относительно этого источника.

Когда это свойство истинно, a NavMesh обновление имеет следующие дополнительные эффекты:

  • Unity не создает сетки высоты, а если она уже существует, то Unity удаляет её.
  • Unity удаляет все автоматически созданные связи вне сетки и не восстанавливает их. Это происходит потому, что созданные связи не могут быть изменены только для одной секции NavMesh. Компоненты NavMeshLink, размещенные вручную, остаются неизменными.
  • Конструктор NavMesh переносит большинство настроек сборки из существующих NavMeshData для сохранения последовательности. Исключениями являются minRegionArea, maxJobWorkers, debugи buildHeightMesh, которые взяты из настроек, которые вы предоставляете. Unity игнорирует изменения в других настройках, таких как agentTypeID или agentHeight. Значения, уже хранящиеся в NavMeshData используются вместо этого.

Известная проблема: если вы вызываете NavMeshBuilder.UpdateNavMeshDataAsync во второй раз для одного и того же объекта NavMeshData, первая операция отменяется. Поэтому нельзя параллельно запускать операции с preserveTilesOutsideBounds, чтобы повлиять на различные части NavMesh. Каждый вызов должен дождаться, пока AsyncOperation.isDone предыдущей операции не станет истинным, прежде чем запустить.

Это свойство доступно с Unity 2020.1.