我最近也遇到了这个问题,我是这么写的
//获取Tilemap Collider 2D控件中的
List<Vector3Int> GetBarrier(Tilemap tilemap)
{
//坐标xy轴
int x,y;
//存放坐标
List<Vector3Int> tiles = new List<Vector3Int>();
//使用给定边界检索瓦片数组
TileBase[] tileArray = tilemap.GetTilesBlock(tilemap.cellBounds);
//以单元格大小返回 Tilemap 的边界
BoundsInt bounds = tilemap.cellBounds;
Vector3Int mapPosition = bounds.position;
Vector3Int mapSize = bounds.size;
for (int i = 0; i < tileArray.Length; i++)
{
//判断是否存在tile
if (tileArray[i] != null)
{
if(i == 0)
{
tiles.Add(mapPosition);
//tilemap.SetTile(mapPosition, pathTile);
} else
{
x = i % (tileArray.Length / mapSize.y);
y = i / (tileArray.Length / mapSize.y);
tiles.Add(new Vector3Int(mapPosition.x + x, mapPosition.y + y, mapPosition.z));
//tilemap.SetTile(new Vector3Int(mapPosition.x + x, mapPosition.y + y, mapPosition.z), pathTile);
}
}
}
return tiles;
}