OverlapSphereCommand
структура в UnityEngine
Выполнено в:UnityEngine.PhysicsModule
Описание
Структура, используемая для настройки команды перекрытия сферы, которая будет выполняться асинхронно во время выполнения задания.
Когда с помощью этой структуры вы планируете пакет команд перекрытия сферой, они выполняются асинхронно. Результаты записываются в буфер результатов. Поскольку запись асинхронна, обращаться к буферу результатов можно только после завершения задания.
Результаты для команды с индексом N в буфере команд хранятся в индексе N * maxHits в буфере результатов.
Если maxHits больше, чем фактическое число результатов для команды, буфер результатов будет содержать некоторые неверные результаты, которые не попали ни в что. Первый неверный результат идентифицируется тем, что коллайдерный экземпляр ID равен 0. Второй и последующие неверные результаты не записываются в команду overlap sphere, так что их коллайдерный экземпляр IDs не гарантированно равен 0. При итерации результатов цикл должен прекратиться, когда обнаруживается первый неверный результат.
Команда Overlap sphere также управляет тем, генерируют ли коллайдеры Trigger попадания. Вы должны соответственно настроить maxHits и размер массива результатов, чтобы хранить все попадания. QueryParameters для управления флагами попаданий. QueryParameters.hitBackfaces и QueryParameters.hitMultipleFaces флаги не поддерживаются и не будут иметь никакого влияния на результаты перекрытия.
Примечание: В профиле регистрируется только BatchQuery.ExecuteOverlapSphere. Информация о количестве запросов не регистрируется.
Дополнительные ресурсы: Physics.OverlapSphere, ColliderHit.
using Unity.Collections; using UnityEngine;
public class SphereOverlap : MonoBehaviour { //Print names of GameObject inside the sphere void BatchOverlapSphere() { var commands = new NativeArray<OverlapSphereCommand>(1, Allocator.TempJob); var results = new NativeArray<ColliderHit>(3, Allocator.TempJob);
commands[0] = new OverlapSphereCommand(Vector3.zero, 10f, QueryParameters.Default);
OverlapSphereCommand.ScheduleBatch(commands, results, 1, 3).Complete();
foreach (var hit in results) Debug.Log(hit.collider.name);
commands.Dispose(); results.Dispose(); } }
Свойства
| Свойство | Описание |
|---|---|
| physicsScene | Сцена физики, в которой запускается команда. |
| point | Центр сферы. |
| queryParameters | Структура для указания дополнительных параметров для пакетного запроса, таких как маска слоя или триггеры попадания. |
| radius | Радиус сферы. |
Конструкторы
| Конструктор | Описание |
|---|---|
| OverlapSphereCommand | Создайте OverlapSphereCommand. |
Статические методы
| Метод | Описание |
|---|---|
| ScheduleBatch | Расписание пакета команд перекрытия сферы для выполнения в задании. |