Unity 6.3
0 онлайн 85 гостей 3 в системе
Вход

Tilemap.GetTilesRangeCount

Declaration

public int GetTilesRangeCount(Vector3Int startPosition, Vector3Int endPosition);

Параметры

Параметр Описание
startPosition Начальное положение диапазона, из которого будут извлекаться плитки.
endPosition Конечная позиция диапазона, из которого будут извлекаться плитки.

Возвращаемое значение

инт Возвращает число плиток в данном диапазоне.

Описание

Получает число плиток в данном диапазоне, включая клетки как в начальной, так и в конечной позиции. Этот метод начинается с заданного начальной позиции и итерирует через все доступные позиции Z, затем итерирует через позиции X и Y, пока не достигнет конечной позиции.

Этот метод начинается в заданной начальной позиции и включает Ячейку в этой начальной позиции. Он получает все Плитки в данной Ячейке, включая Плитки во всех Позициях Z в этой позиции Ячейки. После получения всех Плиток, доступных в текущей Ячейке, метод продолжает итерировать на следующую Ячейку вдоль той же строки, пока не достигнет крайних правых границ Tilemap. После достижения конца Tilemap вдоль первоначального ряда Ячеек, метод затем итерирует вдоль следующего ряда Ячеек выше первоначального ряда, начиная с крайнего левого края Tilemap. Метод продолжает итерировать в этой схеме, пока не достигнет Ячейки в конечной позиции данного диапазона.

Если значение начальной позиции выше значения конечной позиции, то метод начинается с Ячейки в начальной позиции, но итерирует в противоположном направлении обычного метода, заканчивая, когда он достигает Ячейки в конечной позиции.

// 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).