指示 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 | 指示对地形孔洞数据的更改,其中不包括 LOD 计算和树木/植被更新。 |
WillBeDestroyed | 指示即将销毁 TerrainData 对象。 |