Unity Tilemap从x和y索引获取Vector3世界位置

时间:2018-07-20 03:42:39

标签: c# unity3d

我试图了解Tilemap,特别是我希望能够使用Tilemap的x,y索引获得Vector3位置。我看到您可以从Tilemap中获取一个TileBase数组,但是其中似乎没有任何实际数据可以提供此信息。

我还看到有一个TileData类,但是我不确定如何将TileBase转换为TileData,以便可以从中检索位置。

// This code block was gathered from another answer. 
BoundsInt bounds = tilemap.cellBounds;
TileBase[] allTiles = tilemap.GetTilesBlock(bounds);

for (int x = 0; x < bounds.size.x; x++) {
    for (int y = 0; y < bounds.size.y; y++) {
        TileBase tile = allTiles[x + y * bounds.size.x];

        if (tile != null) {
            Debug.Log("x:" + x + " y:" + y + " tile:" + tile.name);
            // How do I get the transform.position of the tile from
            // the x, y indexes?
        } else {
            Debug.Log("x:" + x + " y:" + y + " tile: (null)");
        }
    }
}

请参阅上面的我的评论

  

“如何从x,y获取图块的transform.position   索引?”

1 个答案:

答案 0 :(得分:0)

使用此功能从Tile获取TileData:

https://docs.unity3d.com/ScriptReference/Tilemaps.Tile.GetTileData.html

如果您从TileBase派生了自己的类,请覆盖此函数并返回TileData:

https://docs.unity3d.com/ScriptReference/Tilemaps.TileBase.GetTileData.html