コード例 #1
0
    public TileMap LoadMap(string sourceFile)
    {
        TileMap.Map loadedMap = new TileMap.Map();
        loadedMap.rows = new List <TileMap.Row>();

        var       mapText = Resources.Load <TextAsset>(sourceFile);
        XDocument xFile   = XDocument.Parse(mapText.text);

        if (xFile == null)
        {
            Debug.LogError("No map file found at path " + sourceFile + "; Loading failed!");
            return(null);
        }

        XElement xMap  = xFile.Element(XMLFields.ROOT);
        var      xRows = xMap.Elements(XMLFields.ROW);

        float rowZ = mapProperties.startingPosition.z;

        foreach (var xRow in xRows)
        {
            if (!LoadRow(rowZ, xRow, loadedMap))
            {
                Debug.LogError("Failed to load map! Couldn't load row with z = " + rowZ.ToString());
                return(null);
            }
            //If successfully loaded row
            rowZ += mapProperties.tileWidth;
        }

        TileMap tileMap = new TileMap(loadedMap, mapProperties);

        return(tileMap);
    }
コード例 #2
0
    bool LoadRow(float rowZ, XElement xRow, TileMap.Map virtualMap)
    {
        TileMap.Row loadedRow = new TileMap.Row();
        loadedRow.cells = new List <TileMap.Cell>();

        var   xCells = xRow.Elements(XMLFields.CELL);
        float cellX  = mapProperties.startingPosition.x;

        foreach (var xCell in xCells)
        {
            if (!LoadCell(rowZ, cellX, xCell, loadedRow))
            {
                Debug.Log("Couldn't load cell with z = " + rowZ.ToString() + ", x = " + cellX.ToString());
                return(false);
            }

            cellX += mapProperties.tileWidth;
        }

        virtualMap.rows.Add(loadedRow);
        return(true);
    }