Описание
Структура, используемая для настройки асинхронного выполнения команды raycast во время задания.
При использовании этой структуры для планирования пакета raycasts они будут выполняться асинхронно и параллельно друг другу. Результаты raycasts записываются в буфер результатов. Поскольку результаты записываются асинхронно, к буферу результатов нельзя получить доступ, пока задание не будет завершено.
Результат команды с индексом N в буфере команд будет сохранен с индексом N * maxHits в буфере результатов.
Physics.Raycast, Physics.RaycastAll.
using Unity.Collections;
using Unity.Jobs;
using UnityEngine;
public class Example : MonoBehaviour
{
private void RaycasExample()
{
// Perform a single raycast using RaycastCommand and wait for it to complete
// Setup the command and result buffers
var results = new NativeArray<RaycastHit>(1, Allocator.Temp);
var commands = new NativeArray<RaycastCommand>(1, Allocator.Temp);
// Set the data of the first command
Vector3 origin = Vector3.forward * -10;
Vector3 direction = Vector3.forward;
commands[0] = new RaycastCommand(origin, direction);
// Schedule the batch of raycasts
JobHandle handle = RaycastCommand.ScheduleBatch(commands, results, 1, default(JobHandle));
// Wait for the batch processing job to complete
handle.Complete();
// Copy the result. If batchedHit.collider is null there was no hit
RaycastHit batchedHit = results[0];
// Dispose the buffers
results.Dispose();
commands.Dispose();
}
}
Свойства
direction | Направление луча. |
distance | Максимальное расстояние, на котором луч должен проверять наличие коллизий. |
from | Начальная точка луча в мировых координатах. |
layerMask | Маска слоя, используемая для выборочного игнорирования коллайдеров при создании луча. |
maxHits | Максимальное количество коллайдеров, в которое может попасть луч. |
Конструкторы
RaycastCommand | Создайте RaycastCommand. |
Статические Методы
ScheduleBatch | Запланируйте пакет рейкастов, которые выполняются в задании. |