private void Start() { tempXSize = 0; tempZSize = 0; buildingObject = new GameObject[1500]; buildingNum = 0; for (int i = 0; i < road.vertices.Length; ++i) { if (road.isBuildingPlace[i] == (int)buildingDirection.NOTBUILDINGPLACE) { continue; } int prefab = Random.Range(0, buildingPrefab.Length); Vector3 size = buildingPrefab[prefab].GetComponent <MeshRenderer>().bounds.size; tempXSize = size.x / 12; if (tempXSize < 1) { tempXSize = 0.5f; } else if (tempXSize >= 2) { tempXSize = 1.0f; } i += (int)tempXSize; if (((i + road.xSize + 1) < (road.xSize * road.zSize)) && road.isBuildingPlace[i + road.xSize + 1] != (int)buildingDirection.NOTBUILDINGPLACE) { tempZSize = size.x / 12; if (tempZSize < 1) { tempZSize = 0.5f; } else if (tempZSize >= 2) { tempZSize = 1.0f; } road.isBuildingPlace[i + (road.xSize + 1)] = (int)buildingDirection.NOTBUILDINGPLACE; } if (road.isBuildingPlace[i] == (int)buildingDirection.DOWN) { buildingObject[buildingNum] = Instantiate(buildingPrefab[prefab], road.vertices[i], Quaternion.identity); } else if (road.isBuildingPlace[i] == (int)buildingDirection.UP) { buildingObject[buildingNum] = Instantiate(buildingPrefab[prefab], road.vertices[i], Quaternion.Euler(0, 180, 0)); } else if (road.isBuildingPlace[i] == (int)buildingDirection.LEFT) { buildingObject[buildingNum] = Instantiate(buildingPrefab[prefab], road.vertices[i], Quaternion.Euler(0, 90, 0)); } else if (road.isBuildingPlace[i] == (int)buildingDirection.RIGHT) { buildingObject[buildingNum] = Instantiate(buildingPrefab[prefab], road.vertices[i], Quaternion.Euler(0, -90, 0)); } else { continue; } makeNotBuildingPlace(i); buildingObject[buildingNum].transform.SetParent(buildingParent.transform); if (road.isBuildingPlace[i + 1] != (int)buildingDirection.NOTBUILDINGPLACE) { tempXSize += size.x / 12; if (tempXSize < 1) { tempXSize = 1.0f; } else if (tempXSize >= 2) { tempXSize = 2.0f; } i += (int)tempXSize; } if (((i + road.xSize + 1) < (road.xSize * road.zSize)) && road.isBuildingPlace[i + road.xSize + 1] != (int)buildingDirection.NOTBUILDINGPLACE) { tempZSize = size.x / 12; if (tempZSize < 1) { tempZSize = 0.5f; } else if (tempZSize >= 2) { tempZSize = 1.0f; } for (int j = 0; j < (int)tempZSize; ++j) { road.isBuildingPlace[i + road.xSize + 1] = (int)buildingDirection.NOTBUILDINGPLACE; } } buildingObject[buildingNum].AddComponent <BoxCollider>(); BoxCollider col = buildingObject[buildingNum].GetComponent <BoxCollider>(); col.tag = "buildingBoxCollider"; ++buildingNum; } map.UpdateMesh(); road.RefreshRoadVertices(); road.UpdateMesh(); }