用于设置在作业期间异步执行的重叠球体命令的结构体。
当您使用此结构体安排一批重叠球体命令时,这些命令将异步执行。重叠球体结果将写入结果缓冲区。由于结果是异步写入的,因此在作业完成之前无法访问结果缓冲区。
命令缓冲区中索引 N 处的命令的结果存储在结果缓冲区中索引 N * maxHits 处。
如果 maxHits 大于命令的实际结果数,则结果缓冲区将包含一些无效的结果,这些结果没有命中任何东西。第一个无效结果由碰撞器实例 ID 为 0 标识。第二个和后续无效结果不会写入重叠球体命令,因此它们的碰撞器实例 ID 不保证为 0。在迭代结果时,循环应该在找到第一个无效结果时停止。
重叠球体命令还控制触发碰撞器是否生成命中。您应该相应地调整 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 | 安排在作业中执行的一批重叠球体命令。 |