使用此结构来设置要在作业过程中异步执行的盒体投射命令。
使用此结构计划一批盒体投射时,这些盒体投射会以异步方式并行执行。每个盒体投射的结果会写入结果缓冲区。由于结果是异步写入,因此在作业完成之前无法访问结果缓冲区。
命令缓冲区中索引 N 处的命令的结果会存储在结果缓冲区中索引 N 处。
另请参阅:Physics.Boxcast。
using Unity.Collections; using Unity.Jobs; using UnityEngine;
public class Example : MonoBehaviour { private void BoxcastExample() { // Perform a single boxcast using BoxcastCommand and wait for it to complete // Set up the command and result buffers var results = new NativeArray<RaycastHit>(1, Allocator.Temp); var commands = new NativeArray<BoxcastCommand>(1, Allocator.Temp);
// Set the data of the first command Vector3 center = Vector3.zero; Vector2 halfExtents = Vector3.one * 0.5f; Quaternion orientation = Quaternion.identity; Vector3 direction = Vector3.forward;
commands[0] = new BoxcastCommand(center, halfExtents, orientation, direction);
// Schedule the batch of boxcasts var handle = BoxcastCommand.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(); } }
center | 盒体的中心。 |
direction | 扫射盒体的方向。 |
distance | 扫射的最大距离。 |
halfExtents | 盒体各个维度大小的一半。 |
layerMask | 用于在投射盒体时有选择地忽略碰撞体的 LayerMask。 |
orientation | 盒体的旋转。 |
BoxcastCommand | 创建 BoxcastCommand。 |
ScheduleBatch | 安排在一个作业中要执行的一批盒体投射。 |