Описание
Укажите типы изменений ландшафта в обратном вызове 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 будет уничтожен. |

