Описание
Укажите типы изменений ландшафта в обратном вызове OnTerrainChanged.
Используйте побитовое И для обнаружения множественных изменений.
using UnityEngine;
[ExecuteInEditMode]
public class DetectTerrainChanges : MonoBehaviour
{
void OnTerrainChanged(TerrainChangedFlags flags)
{
if ((flags & TerrainChangedFlags.Heightmap) != 0)
{
Debug.Log("Heightmap changes");
}
if ((flags & TerrainChangedFlags.DelayedHeightmapUpdate) != 0)
{
Debug.Log("Heightmap painting");
}
if ((flags & TerrainChangedFlags.TreeInstances) != 0)
{
Debug.Log("Tree changes");
}
}
}
Приведенный выше пример показывает, как можно обнаружить изменения ландшафта с помощью обратного вызова OnTerrainChanged и перечисления TerrainChangedFlags.
Свойства
Heightmap | Указывает на изменение данных карты высот. |
TreeInstances | Указывает на изменение данных дерева. |
DelayedHeightmapUpdate | Указывает на изменение данных карты высот без вычисления уровня детализации. |
FlushEverythingImmediately | Указывает на то, что изменение ландшафта было настолько значительным, что внутренние данные рендеринга необходимо сбросить и создать заново. |
RemoveDirtyDetailsImmediately | Указывает на изменение подробных данных. |
HeightmapResolution | Указывает на изменение разрешения карты высот. |
Holes | Указывает на изменение данных о лунках рельефа. |
DelayedHolesUpdate | Указывает на изменение данных о лунках ландшафта, которые не включают расчеты уровня детализации и обновления деревьев/растительности. |
WillBeDestroyed | Указывает, что объект TerrainData будет уничтожен. |