void UpdatePointMeshes() { int numParticles = MPAPI.mpGetNumParticles(); int numActiveChildren = numParticles / 65000 + (numParticles % 65000 == 0 ? 0 : 1); while (children.Count < numActiveChildren) { GameObject child = CreateChildMesh(); Vector3[] vertices = new Vector3[65000]; Vector2[] uv = new Vector2[65000]; int[] indices = new int[65000]; fixed(Vector3 *v = vertices) { fixed(Vector2 *t = uv) { fixed(int *idx = indices) { meshData.vertices = v; meshData.uv = t; meshData.indices = idx; MPAPI.mpGeneratePointMesh(children.Count, ref meshData); } } } Mesh mesh = child.GetComponent <MeshFilter>().mesh; mesh.vertices = vertices; mesh.uv = uv; mesh.SetIndices(indices, MeshTopology.Points, 0); children.Add(child); } UpdateChildMeshes(numActiveChildren); }