// Method that loads the layers private void LoadLevelFromStringLayers(StageData sData) { int HEIGHT = sData.height; int WIDTH = sData.width; int LAYERS = sData.layer; string title = sData.title; int life = sData.life; int counter = 0; gameObjects = new Transform[WIDTH, HEIGHT, LAYERS]; triggers = new List <List <Vector3> >(); tileLevelParent = GameObject.Find("TileLevel"); if (tileLevelParent == null) { tileLevelParent = new GameObject("TileLevel"); StageInfo stageInfo = tileLevelParent.AddComponent <StageInfo>(); stageInfo.SetInitInfo(life, title); //background Instantiate(Resources.Load("Prefab/InGameObject/BackGround"), tileLevelParent.transform); } for (int i = 0; i < sData.triggerNum.Length; i++) { List <Vector3> temp = new List <Vector3>(); for (int j = 0; j < sData.triggerNum[i]; j++) { temp.Add(sData.trigger[counter]); counter++; } triggers.Add(temp); } counter = 0; //set gameobject array for (int x = 0; x < WIDTH; x++) { for (int y = 0; y < HEIGHT; y++) { for (int z = 0; z < LAYERS; z++) { currentX = x; currentY = y; currentZ = z; previewStatus = sData.state[counter]; previewThreshold = sData.threshold[counter]; Transform obj = CreateBlock(sData.level[counter], x, y, z); gameObjects[x, y, z] = obj; counter++; } } } //set triggers for (int x = 0; x < WIDTH; x++) { for (int y = 0; y < HEIGHT; y++) { for (int z = 0; z < LAYERS; z++) { currentX = x; currentY = y; currentZ = z; Transform obj = gameObjects[x, y, z]; if (obj != null) { currentObj = obj.GetComponent <InGameObject>(); if (currentObj.GetType() == typeof(FlipButton) || currentObj.GetType().IsSubclassOf(typeof(FlipButton))) { AttachOperands(); } } } } } for (int x = 0; x < WIDTH; x++) { for (int y = 0; y < HEIGHT; y++) { for (int z = 0; z < LAYERS; z++) { currentX = x; currentY = y; currentZ = z; Transform obj = gameObjects[x, y, z]; if (obj != null) { currentObj = obj.GetComponent <InGameObject>(); if (currentObj != null) { currentObj.Teleport(currentObj.CurrentPos); } } } } } }