void GenerateXmlFile() { LoadTimeMap _loadTile = GetComponent <LoadTimeMap>(); if (_loadTile != null) { _loadTile.LoadSpriteData(); _multiSpriteRes = _loadTile.SpriteBuildData; } int nFileIdx = 0; foreach (Tilemap _mapTile in LstAssignedTitleMap) { if (_mapTile != null) { string strFileName = string.Format("{0}_{1}", GenerateFileName, nFileIdx.ToString("000")); _generateTileContent(_mapTile, strFileName); nFileIdx++; } } }
private void _generateTileContent(Tilemap _tile, string strGenerateFileName) { LoadTimeMap _loadTile = GetComponent <LoadTimeMap>(); if (_loadTile != null) { _loadTile.TsxSerializeData(); } BoundsInt bounds = _tile.cellBounds; TileBase[] allTiles = _tile.GetTilesBlock(bounds); StringBuilder strBuf = new StringBuilder(); StringBuilder strNotInclude = new StringBuilder(); HashSet <string> setNotInclude = new HashSet <string>(); int[] arrayInt; List <int> lstInt = new List <int>(); for (int y = bounds.size.y - 1; y >= 0; y--) { for (int x = 0; x < bounds.size.x; x++) { int nIdx = y * bounds.size.x + x; TileBase _base = allTiles[nIdx]; Vector3Int vecPos = new Vector3Int(x + _tile.origin.x, y + _tile.origin.y, 0); Sprite sp = _tile.GetSprite(vecPos); if (sp != null) { //另外一个思路 //int nIdxSprite = _getIndex(sp) + 1; int nIdxSprite = _getIndexBySpriteID(sp.name); string str = string.Format("{0}", nIdxSprite); strBuf.Append(str); Debug.Log(sp.name); lstInt.Add(nIdxSprite); } else { strBuf.Append("0"); lstInt.Add(0); } if (x == bounds.size.x - 1 && y == 0) { } else { strBuf.Append(", "); } } strBuf.Append("\n"); } Debug.Log(string.Format("[width:{0}][height:{1}]", _tile.size.x, _tile.size.y)); Debug.Log(strBuf.ToString()); foreach (string str in setNotInclude) { strNotInclude.Append(string.Format("{0}, ", str)); } Debug.Log(strNotInclude.ToString()); string strTsxFile = ""; if (TsxFileName.Length > 0) { strTsxFile = TsxFileName + ".tsx"; } else { strTsxFile = "MeowTileSet"; } arrayInt = new int[lstInt.Count]; int nIdxArray = 0; foreach (int nVal in lstInt) { arrayInt[nIdxArray] = nVal; nIdxArray++; } //makeXml(bounds.size.x, bounds.size.y, strBuf.ToString(), strGenerateFileName, TsxFileName, _loadTile.GetTileSet().tilewidth, _loadTile.GetTileSet().tileheight); MakeJsonData(bounds.size.x, bounds.size.y, arrayInt, strGenerateFileName, TsxFileName, _loadTile.GetTileSet().tilewidth, _loadTile.GetTileSet().tileheight); }