Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

TerrainData.GetDetailLayer

Предложить изменения

Успех!

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

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство
public function GetDetailLayer(xBase: int, yBase: int, width: int, height: int, layer: int): int[,];
public int[,] GetDetailLayer(int xBase, int yBase, int width, int height, int layer);

Параметры

Описание

Возвращает 2D массив объектов детализированной плоскости в определенном месте.

The Terrain system uses detail layer density maps. Each map is essentially a grayscale image Система ландшафта использует детализированный слой плотности карты. Каждая карта - по сути черно белое изображение, в котором значение каждого пикселя определяет количество детализированных объектов, которые будут процедурно размещены в области ландшафта, которая соответствует пикселю. Может быть использовано несколько детализированных типов, карта размещается в "layers" - массиве индексов слоев, определяющих порядок детализированных типов, определенных into "layers" - the array indices of the layers are determined by the order of the detail types defined в инспекторе ландшафта (т.е. когда инструмент окрашивания выделен).

	// Set all pixels in a detail map below a certain threshold to zero.
	function DetailMapCutoff(t: Terrain, threshold: float) {
		// Get all of layer zero.
		var map = t.terrainData.GetDetailLayer(0, 0, t.terrainData.detailWidth, t.terrainData.detailHeight, 0);
		
		// For each pixel in the detail map...
		for (var y = 0; y < t.terrainData.detailHeight; y++) {
			for (var x = 0; x < t.terrainData.detailWidth; x++) {
				// If the pixel value is below the threshold then
				// set it to zero.
				if (map[x, y] < threshold) {
					map[x, y] = 0.0;
				}
			}
		}
		
		// Assign the modified map back.
		t.terrainData.SetDetailLayer(0, 0, 0, map);
	}