U_性能_合并 Mesh 工具

    [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");
    }
posted @ 2022-03-02 10:04  匿鱼  阅读(42)  评论(0)    收藏  举报