Пример #1
0
    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++;
            }
        }
    }
Пример #2
0
    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);
    }