void ApplyMeshRenderer() { if (meshFilter == null) { meshFilter = GetComponent <MeshFilter>(); } if (meshFilter != null) { var mesh = meshFilter.mesh; if (mesh == null) { mesh = new Mesh(); meshFilter.mesh = mesh; } mesh.Clear(); if (vertex != null) { mesh.SetVertices(vertex); mesh.SetUVs(0, uv); mesh.SetUVs(1, uv1); mesh.SetUVs(2, uv2); mesh.SetUVs(3, uv3); mesh.SetUVs(4, uv4); mesh.SetColors(colors); var submesh = MatCollector.submesh; if (submesh != null) { mesh.subMeshCount = submesh.Count; for (int i = 0; i < submesh.Count; i++) { mesh.SetTriangles(submesh[i], i); } } } } if (renderer == null) { renderer = GetComponent <MeshRenderer>(); } if (renderer != null) { renderer.materials = MatCollector.GenerateMaterial(); } }
public void ApplyMeshRenderer(MeshFilter meshFilter, MeshRenderer renderer) { if (meshFilter == null) { return; } if (meshFilter != null) { Mesh mesh; #if UNITY_EDITOR if (Application.isPlaying) { mesh = meshFilter.mesh; } else { mesh = meshFilter.sharedMesh; } #else mesh = meshFilter.mesh; #endif if (mesh == null) { mesh = new Mesh(); meshFilter.mesh = mesh; } mesh.Clear(); if (vertex != null) { mesh.SetVertices(vertex); mesh.SetUVs(0, uv); mesh.SetUVs(1, uv1); mesh.SetUVs(2, uv2); mesh.SetUVs(3, uv3); mesh.SetUVs(4, uv4); mesh.SetColors(colors); var submesh = MatCollector.submesh; if (submesh != null) { mesh.subMeshCount = submesh.Count; for (int i = 0; i < submesh.Count; i++) { var tri = submesh[i]; //for (int k = 0; k < tri.Length; k++) // if (tri[k] > vertex.Count) // { // Debug.LogError(k + ":" + tri[k]); // tri[k] = 0; // } mesh.SetTriangles(tri, i); } } } } if (renderer != null) { #if UNITY_EDITOR if (Application.isPlaying) { renderer.materials = MatCollector.GenerateMaterial(); //这里会产生一次GC } else { renderer.sharedMaterials = MatCollector.GenerateMaterial(); //这里会产生一次GC } #else renderer.materials = MatCollector.GenerateMaterial(); //这里会产生一次GC #endif } }