hi there…
i found a little bug in my dummy code, wich i need to use for testing the loading of a level.
using UnityEngine;
using System.Collections;
public class Map_Loader : MonoBehaviour {
public int scrollspeed = 10;
public int zoomspeed = 20;
public int rotatespeed = 5;
public int mapsize_x = 50;
public int mapsize_y = 50;
public GameObject selfObject;
public GameObject kamera;
public GameObject kamera_view;
public GameObject DirtBlock;
public GameObject DirtStraight;
public GameObject DirtInnerCurver;
public GameObject DirtOuterCurver;
public GameObject DirtRoof;
public GameObject DirtGold;
public GameObject DirtDitrima;
public GameObject DirtFloor;
public int generateChunkSize = 16;
// Use this for initialization
void Start () {
StartCoroutine(createMap());
kamera.transform.position = new Vector3(((mapsize_x/2)*size.x), 0, ((mapsize_y/2)*size.x));
}
IENumerator createMap() {
MeshFilter mf = DirtBlock.GetComponent(typeof(MeshFilter)) as MeshFilter;
if (mf == null){return;}
Mesh mesh = mf.sharedMesh;
if (mesh == null){return;}
Vector3 size = mesh.bounds.size;
int maprun_x = 0;
int maprun_y = 0;
float pos_x = 0;
float pos_y = 0;
for(maprun_y=0; maprun_y<mapsize_y+1; maprun_y++){
for(maprun_x=0; maprun_x<mapsize_x+1; maprun_x++){
pos_x = maprun_x*size.x;
pos_y = maprun_y*size.z;
GameObject created_block = Instantiate(DirtRoof, new Vector3(pos_x, 0, pos_y), Quaternion.identity) as GameObject;
created_block.transform.parent = selfObject.transform;
created_block.name = "DirtBlock_"+maprun_x+"/"+maprun_y;
Debug.Log(created_block.name+" created!");
// yield return 0 = the same as wait(1) in 3DGS ;)
if((maprun_y * (mapsize_y+1)) + maprun_x >= (generateChunkSize * generateChunkSize)) { yield return 0; }
}
}
}
// Update is called once per frame
void Update () {
if(Input.mousePosition.x < 10)
{kamera.transform.Translate(-scrollspeed*Time.deltaTime,0,0);}
else if(Input.mousePosition.x > Screen.width-10)
{kamera.transform.Translate(scrollspeed*Time.deltaTime,0,0);}
if(Input.mousePosition.y < 10)
{kamera.transform.Translate(0,0,-scrollspeed*Time.deltaTime);}
else if(Input.mousePosition.y > Screen.height-10)
{kamera.transform.Translate(0,0,scrollspeed*Time.deltaTime);}
if(Input.GetKey(KeyCode.End) kamera_view.camera.fieldOfView < 70) // back
{kamera_view.camera.fieldOfView += zoomspeed*Time.deltaTime;}
else if(Input.GetKey(KeyCode.Home) kamera_view.camera.fieldOfView > 30) // forward
{kamera_view.camera.fieldOfView -= zoomspeed*Time.deltaTime;}
else if(Input.GetAxis("Mouse ScrollWheel") < 0 kamera_view.camera.fieldOfView < 70) // back
{kamera_view.camera.fieldOfView += zoomspeed*3*Time.deltaTime;}
else if(Input.GetAxis("Mouse ScrollWheel") > 0 kamera_view.camera.fieldOfView > 30) // forward
{kamera_view.camera.fieldOfView -= zoomspeed*3*Time.deltaTime;}
if(Input.GetKey(KeyCode.Delete))
{kamera.transform.Rotate(new Vector3(0,-rotatespeed*Time.deltaTime,0));}
else if(Input.GetKey(KeyCode.PageDown))
{kamera.transform.Rotate(new Vector3(0,rotatespeed*Time.deltaTime,0));}
kamera.transform.position = new Vector3(kamera.transform.position.x, 0, kamera.transform.position.z);
}
}
The problem is the for-loop i think. When the level has a size of 100x100 tiles, the loading time is around 2 minutes. Even if i use a 2 Polygon Tile with 1 texture ..
Is here a way to reduce that loading time? Cause the maximum level size is 320x320 .. And Unity hangs up while loading that levels…