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

Tilemap.GetTilesRangeNonAlloc

Declaration

public int GetTilesRangeNonAlloc(Vector3Int startPosition, Vector3Int endPosition, Vector3Int[] positions, TileBase[] tiles);

Параметры

Параметр Описание
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);

Vector3Int[] positions = new Vector3Int[16]; TileBase[] tiles = new TileBase[16]; var 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); } }

В вышеприведённом примере GetTilesRangeNonAlloc с начальной позицией (0, 0, 0) и конечной позицией (5, 1, 0) возвратит массив из шестнадцати плиток: десять плиток от (0, 0, 0) до (10, 0, 0), а также шесть плиток от (0, 1, 0) до (5, 1, 0).

Если начальную и конечную позиции поменяли, то GetTilesRangeNonAlloc с начальной позицией (5, 1, 0) и конечной позицией (0, 0, 0) возвратит массив из шестнадцати плиток: шесть плиток от (5, 1, 0) до (0, 1, 0), а также десять плиток от (10, 0, 0) до (0, 0, 0).