public void Load(int stage_id) { switch (stage_id) { case 1: IMapData mp01 = new Map01(); currentMap = mp01; MakeMap(mp01); break; case 2: IMapData mp02 = new Map02(); currentMap = mp02; MakeMap(mp02); break; case 3: IMapData mp03 = new Map03(); currentMap = mp03; MakeMap(mp03); break; case 4: IMapData mp04 = new Map04(); currentMap = mp04; MakeMap(mp04); break; case 5: IMapData mp05 = new Map05(); currentMap = mp05; MakeMap(mp05); break; case 6: IMapData mp06 = new Map06(); currentMap = mp06; MakeMap(mp06); break; case 7: IMapData mp07 = new Map07(); currentMap = mp07; MakeMap(mp07); break; } }
private void MakeMap(IMapData mapData) { RotateController.getInstance().clearRotatings(); GameObject[] floor = GameObject.FindGameObjectsWithTag("Floor"); foreach (GameObject obj in floor) { GameObject.Destroy(obj); } GameObject[] end = GameObject.FindGameObjectsWithTag("Endpoint"); foreach (GameObject obj in end) { GameObject.Destroy(obj); } foreach (Vector3 pos in mapData.CubePos) { GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.tag = "Floor"; cube.name = "C" + pos.x + pos.y + pos.z; // 'C'ube cube.transform.position = pos; } for (int i = 0; i < mapData.SlopePos.Length; i++) { GameObject slope = makeSlope(); Vector3 pos = mapData.SlopePos[i]; slope.tag = "Floor"; slope.name = "S" + pos.x + pos.y + pos.z; // 'S'lope slope.transform.position = pos; slope.transform.rotation = mapData.SlopeRot[i]; } foreach (RotatingObject data in mapData.RotObj) { GameObject obj = GameObject.Find(data.name); if (obj == null) { continue; } Rotating script = obj.AddComponent <Rotating>() as Rotating; script.point = data.point; script.axis = data.axis; script.PlayerRot = data.playerRot; RotateController.getInstance().addRotating(script, data.groupId); } { GameObject player = GameObject.Find("Player"); player.transform.position = new Vector3(mapData.PlayerStart.x, mapData.PlayerStart.y + 1, mapData.PlayerStart.z); // player.GetComponent <MoveCharacter>().Init(); } //关卡终点 { GameObject endpoint = (GameObject)Resources.Load("Prefabs/endpoint"); endpoint.tag = "Endpoint"; endpoint.transform.position = mapData.GameEnd; Object.Instantiate(endpoint); } //升降 { //************************ //ImapData的底层数据结构设计比较糟糕,修改会影响到其他地图,因此可升降平台在此写死 //************************ if (id == 3) { Map03 mapData03 = (Map03)mapData; GameObject movePoint = (GameObject)Resources.Load("Prefabs/movepoint"); movePoint.transform.position = mapData03.MovePoint; Object.Instantiate(movePoint); } } RotateController.getInstance().select(); }