startPosition | 要检索平铺的范围的起始位置。 |
endPosition | 要检索平铺的范围的结束位置。 |
int 返回给定范围内平铺的数量。
检索给定范围内平铺的数量,包括起始位置和结束位置的单元格。此方法从给定的起始位置开始,遍历所有可用的 Z 位置,然后遍历 X 和 Y 位置,直到到达结束位置。
此方法从给定的起始位置开始,并且包括此起始位置的单元格。它检索给定单元格的所有平铺,包括该单元格位置的所有 Z 位置的平铺。在检索到当前单元格的所有可用平铺后,该方法继续沿着同一行上的下一个单元格进行迭代,直到到达平铺图的最右端。在到达平铺图沿着初始单元格行的末尾之后,该方法然后沿着初始行上方的下一行单元格进行迭代,从平铺图的最左端开始。该方法继续以这种模式进行迭代,直到到达给定范围的结束位置的单元格。
如果起始位置的值高于结束位置的值,则该方法从起始位置的单元格开始,但以与通常方法相反的方向进行迭代,直到到达结束位置的单元格。
// Retrieves all tiles with a range on the tilemap and prints out the positions and tiles to console using UnityEngine; using UnityEngine.Tilemaps;
public class ExampleClass : MonoBehaviour { void Start() { Tilemap tilemap = GetComponent<Tilemap>(); SetTiles(tilemap);
var count = tilemap.GetTilesRangeCount(new Vector3Int(0, 0, 0), new Vector3Int(5, 1, 0));
Vector3Int[] positions = new Vector3Int[count]; TileBase[] tiles = new TileBase[count]; count = tilemap.GetTilesRangeNonAlloc(new Vector3Int(0, 0, 0), new Vector3Int(5, 1, 0), positions, tiles); for (int index = 0; index < count; index++) { print(positions[index]); print(tiles[index]); } }
// Sets Tiles in a 10 by 10 block void SetTiles(Tilemap tilemap) { Tile tile = ScriptableObject.CreateInstance<Tile>(); TileBase[] tiles = new TileBase[10 * 10]; for (int index = 0; index < tiles.Length; index++) { tiles[index] = tile; } tilemap.SetTilesBlock(new BoundsInt(0, 0, 0, 10, 10, 1), tiles); } }
在上面的示例中,GetTilesRangeCount 将返回十六个的计数:从 (0, 0, 0) 到 (10, 0, 0) 的十个平铺,以及从 (0, 1, 0) 到 (5, 1, 0) 的六个平铺。