public Map Parse(string text) { JSONNode json = JSON.Parse(text); Map map = new Map(createReferences(json)); map.Layers = createLayers(json["layers"]); map.Height = json["height"].AsInt; map.Width = json["width"].AsInt; return map; }
private void createTiles(Map map) { foreach (Layer layer in map.Layers) { Debug.Log("Rendering layer: " + layer.Name); GameObject holder = new GameObject(); holder.name = layer.Name; holder.transform.parent = tileHolder.transform; int x = 0, y = -map.Height; foreach (int d in layer.Data) { if (d != 0) { GameObject prefab = tilePrefab; // set a custom prefab if tile requires one if (map.ObjectReferences.ContainsKey(d)) { prefab = map.ObjectReferences[d]; } GameObject t = (GameObject)GameObject.Instantiate( prefab, new Vector3(x * tileSize.x, -y * tileSize.y, layer.Height), layer.Rotation); t.name = x + ", " + y + ": " + tilePrefab.name; // only set the custom tile if using the tile prefab if (prefab == tilePrefab) { SpriteRenderer renderer = t.GetComponentInChildren<SpriteRenderer>(); if (renderer != null) { renderer.sprite = spriteSheet.sprites[d - 1]; } } t.transform.parent = holder.transform; } x++; if (x >= map.Width) { x = 0; y++; } } } }
private void initialize() { if (map == null) { Debug.Log("Loading map data"); map = new TiledMapLoader( new JSONMapParser()) .Load(mapJson); MapContainer.Map = map; } tileHolder = GameObject.Find(tileHolderName); if (tileHolder != null) { return; } tileHolder = new GameObject(); tileHolder.name = tileHolderName; spriteSheet = new SpriteSheet(spriteResource); createTiles(map); }