static void _OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { foreach (string ia in importedAssets) { if (!ia.EndsWith(".prefab")) { continue; } AssetFile af = new AssetFile(ia); if (!af.ShowResourceName().ToLower().Contains("terrain.")) { continue; } GameObject terrainPrefab = AssetDatabase.LoadAssetAtPath <GameObject>(ia); GameObject instance = GameObject.Instantiate(terrainPrefab); List <Transform> waters = new List <Transform>(); foreach (Transform transform in instance.GetComponentsInChildren <Transform>()) { if (transform.name.StartsWith("Water")) { waters.Add(transform); } } int waveCount = 0; foreach (Transform water in waters) { int count = water.childCount; waveCount += count; List <Transform> children = new List <Transform>(); for (int i = 0; i < count; i++) { children.Add(water.GetChild(i)); } foreach (Transform transform in children) { GameObject.DestroyImmediate(transform.gameObject); } } if (waveCount > 0) { bool success; PrefabUtility.SaveAsPrefabAsset(instance, ia, out success); DLog.Log(string.Format("Cleanup Waves from '{0}': {1}", ia, success)); } GameObject.DestroyImmediate(instance); } CheckForMissingKeyFrameForJointOfAnimationClip(importedAssets); }