Unity Mesh合并

来源:互联网 发布:淘宝推广收费标准 编辑:程序博客网 时间:2024/06/05 15:33
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif


public class MyMeshCombine : MonoBehaviour {
    public Mesh MeshCombine;
    public Mesh RenderMesh;
    public Mesh RenderMesh1;
    public Transform Target;
    public Transform Target1;


    public Vector3[] vertices;
    public Vector2[] uvs;
    public int[] triangles;
    // Use this for initialization
    void Start ()
    {
#if UNITY_EDITOR
        if (Target&& Target1)
        {
            MeshCombine = new Mesh();
               CombineInstance[] combine = new CombineInstance[2];


            MeshFilter MeshFilter = Target.GetComponent<MeshFilter>();
            RenderMesh = MeshFilter.sharedMesh;
            combine[0].mesh = RenderMesh;
             combine[0].transform =Target.localToWorldMatrix;
         
            MeshFilter = Target1.GetComponent<MeshFilter>();
            RenderMesh1 = MeshFilter.sharedMesh;
            combine[1].mesh = RenderMesh1;
            combine[1].transform = Target1.localToWorldMatrix;


            MeshCombine.CombineMeshes(combine, false);
            vertices = MeshCombine.vertices;
            uvs = MeshCombine.uv;
            triangles = MeshCombine.triangles;


            for (int i = 0; i < vertices.Length; i++)
            {
                vertices[i].y -= 3f;
                vertices[i].z -= 0.5f;
                vertices[i].x -= 0.066f;
            }
            MeshCombine.Clear();
            MeshCombine.vertices = vertices;
            MeshCombine.uv = uvs;
            MeshCombine.triangles = triangles;
            MeshCombine.UploadMeshData(false);
            AssetDatabase.CreateAsset(MeshCombine, "Assets/" + RenderMesh.name + "1.asset");
        }


      
#endif
    }
}