Al descubrir cómo obtener todos los mosaicos personalizados de Tilemap y debido al método de ITilemap
no haber GetTilesBlock
mencionado en las respuestas, sugiero agregar un método de extensión como este (solo 2D):
public static class TilemapExtensions
{
public static T[] GetTiles<T>(this Tilemap tilemap) where T : TileBase
{
List<T> tiles = new List<T>();
for (int y = tilemap.origin.y; y < (tilemap.origin.y + tilemap.size.y); y++)
{
for (int x = tilemap.origin.x; x < (tilemap.origin.x + tilemap.size.x); x++)
{
T tile = tilemap.GetTile<T>(new Vector3Int(x, y, 0));
if (tile != null)
{
tiles.Add(tile);
}
}
}
return tiles.ToArray();
}
}
En este caso, si tiene, supongamos, un mosaico personalizado TileRoad, heredado de Tile o TileBase, entonces puede obtener todos los mosaicos de TileRoad con llamada:
TileBase[] = tilemap.GetTiles<RoadTile>();
Para ITilemap podemos cambiar el parámetro (this Tilemap tilemap)
a (this ITilemap tilemap)
pero no lo comprobé .
GetComponent<Tilemap>()
.