using System.Collections.Generic; using System.Linq; using UnityEngine; public class SceneCleanTool : MonoBehaviour { [SerializeField] private List renderers; [SerializeField] private Terrain terrain; [SerializeField] private int detailPrototypeID; [SerializeField] private int treePrototypeID; [SerializeField] private List detailGameObjects; private void GetAllTerrainDetails() { _ = terrain.terrainData.detailPrototypes; int[,] detailLayer = terrain.terrainData.GetDetailLayer(0, 0, terrain.terrainData.detailWidth, terrain.terrainData.detailHeight, detailPrototypeID); for (int i = 0; i < terrain.terrainData.detailHeight; i++) { for (int j = 0; j < terrain.terrainData.detailWidth; j++) { if (detailLayer[j, i] > 0) { float num = (float)j / (float)terrain.terrainData.detailWidth; float num2 = (float)i / (float)terrain.terrainData.detailHeight; _ = terrain.transform.position + new Vector3(num * terrain.terrainData.size.x, 0f, num2 * terrain.terrainData.size.z); TreeInstance instance = new TreeInstance { position = new Vector3(num, 0f, num2), prototypeIndex = treePrototypeID, widthScale = 1f, heightScale = 1f, color = Color.white, lightmapColor = Color.white }; terrain.AddTreeInstance(instance); detailLayer[j, i] = 0; } } } terrain.terrainData.SetDetailLayer(0, 0, detailPrototypeID, detailLayer); Debug.Log("Transfer completed."); } private void FindAllDisableMeshRenderer() { renderers = new List(); foreach (MeshRenderer item in GetComponentsInChildren().ToList()) { if (!item.enabled) { renderers.Add(item); } } } private void DestroyRenderersFromList() { foreach (MeshRenderer renderer in renderers) { Object.DestroyImmediate(renderer.gameObject); } } }