Котище рыжий
Мастер
(1558)
1 неделю назад
MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
CombineInstance[] combine = new CombineInstance[meshFilters.Length];
for (int i = 0; i < meshFilters.Length; i++)
{
combine[i].mesh = meshFilters[i].sharedMesh;
combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
meshFilters[i].gameObject.SetActive(false);
}
Mesh combinedMesh = new Mesh(); combinedMesh.CombineMeshes(combine);
MeshFilter meshFilter = gameObject.AddComponent<MeshFilter>();
meshFilter.mesh = combinedMesh;
gameObject.AddComponent<MeshRenderer>().material = meshFilters[0].GetComponent<MeshRenderer>().sharedMaterial;
}
Еще советую тебе использовать аттрибут ExecuteInEditMode для класса и выполнять код в OnValidate для выполнения прямо в редакторе. Так это реально сделает сильную оптимизацию. Но будь осторожен так как ты можешь все сломать.
Ради оптимизации