Вот такой вод код создаёт новый гамеобжект и помещает в него все меши.
Но все меши помещаются в 0,0,0 как сохранить их положение и размер которые задаются перед соединением?

GameObject map1 = GameObject.CreatePrimitive(PrimitiveType.Cube);
map1.name = "map1";
map1.transform.position = new Vector3(0, 0, 0);
Destroy(map1.GetComponent<Collider>());
MeshRenderer mr1 = map1.GetComponent<MeshRenderer>();
mr1.material = (Material)Resources.Load("Model/Materials/wood",typeof(Material));
Mesh m1 = map1.GetComponent<MeshFilter>().mesh;
m1.Clear();
CombineInstance[] instances = new CombineInstance[i];
i=0;
for (int x = 0; x < 38; x++)
{
for (int z = 0; z < 38; z++)
{
if (LMap[x,z]<1)
{
x1=x+0.5f;
z1=z+0.5f;
s1=Random.Range(0, 0.5f);
groundPoint = GetHeight(ref x1,ref z1);
GameObject inst = (GameObject)Instantiate(Resources.Load("Model/wood", typeof(GameObject)));
inst.transform.eulerAngles = new Vector3( Random.Range(0, 15)-90, Random.Range(0, 360), Random.Range(0, 15));
inst.transform.position = groundPoint;
inst.transform.localScale += new Vector3(s1, Random.Range(0, 0.5f), s1);
Mesh me = inst.GetComponent<MeshFilter>().mesh;
instances[i].mesh = me;
instances[i].transform = Matrix4x4.identity;
i=i+1;
}
}
}
m1.CombineMeshes(instances);