版本:Unity 6 (6000.0)
语言英语
  • C#

Tilemap.GetTilesRangeCount

建议更改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们不能接受所有提交内容,但我们会阅读用户提出的每个更改建议,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

声明

public int GetTilesRangeCount(Vector3Int startPosition, Vector3Int endPosition);

参数

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) 的六个平铺。