[MenuItem("资源工具/模型/合并模型")]
public static void GenerateParse() {
var go = Selection.GetFiltered(typeof(GameObject), SelectionMode.DeepAssets)[0] as GameObject;
var meshFilters = go.GetComponentsInChildren<MeshFilter>();
CombineInstance[] combine = new CombineInstance[meshFilters.Length];
var mat = meshFilters[0].transform.GetComponent<MeshRenderer>().sharedMaterial;
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);
}
var obj = new GameObject();
obj.transform.SetParent(go.transform);
var filter = obj.AddComponent<MeshFilter>();
var renderer = obj.AddComponent<MeshRenderer>();
renderer.sharedMaterial = mat;
var mesh = new Mesh();
mesh.CombineMeshes(combine);
filter.sharedMesh = mesh;
AssetDatabase.CreateAsset(filter.sharedMesh, "Assets/Art/Mesh/" + go.name + ".asset");
}