Unity 6.3
0 онлайн 101 гостей 3 в системе
Вход
Камера Шаг 34 из 82

Получить результаты отбора

Получение результатов через обратный вызов onStateChanged

Эффективнее всего реагировать на изменение видимости сфер или их состояния по расстоянию через поле обратного вызова onStateChanged. Присвойте этому полю функцию, принимающую структуру CullingGroupEvent в качестве аргумента; она будет вызвана после завершения отсечения для каждой сферы, изменившей состояние. Члены структуры CullingGroupEvent сообщают о прежнем и новом состояниях сферы.

group.onStateChanged = StateChangedMethod;

private void StateChangedMethod(CullingGroupEvent evt)
{
    if(evt.hasBecomeVisible)
        Debug.LogFormat("Sphere {0} has become visible!", evt.index);
    if(evt.hasBecomeInvisible)
        Debug.LogFormat("Sphere {0} has become invisible!", evt.index);
}

Получение результатов через CullingGroup Список файлов API

В дополнение к делегату onStateChanged, CullingGroup предоставляет API для получения последних результатов видимости и расстояния любой сферы в массиве ограничивающих сфер. Чтобы проверить состояния одной сферы, используйте методы IsVisible и GetDistance:

bool sphereIsVisible = group.IsVisible(0);
int sphereDistanceBand = group.GetDistance(0);

Чтобы проверить состояния сразу нескольких сфер, можно использовать метод QueryIndices. Этот метод сканирует непрерывный диапазон сфер, чтобы найти те, которые соответствуют заданной видимости или состоянию по расстоянию.

// Allocate an array to hold the resulting sphere indices - the size of the array determines the maximum spheres checked per call
int[] resultIndices = new int[1000];
// Also set up an int for storing the actual number of results that have been placed into the array
int numResults = 0;

// Find all spheres that are visible
numResults = group.QueryIndices(true, resultIndices, 0);
// Find all spheres that are in distance band 1
numResults = group.QueryIndices(1, resultIndices, 0);
// Find all spheres that are hidden in distance band 2, skipping the first 100
numResults = group.QueryIndices(false, 2, resultIndices, 100);

Помните, что информация, полученная запросом API, обновляется только тогда, когда камера, используемая CullingGroup, действительно выполняет свой селекционный процесс.