Unity DOTS学习记录(三)-JobEntity
环境:
Unity:6000.2.10f1
Entities:1.4.3
参考:
https://github.com/Unity-Technologies/EntityComponentSystemSamples
在上一篇中,我们在RotationSystem里通过SystemAPI.Query + foreach的方式遍历实体,实现旋转逻辑:1
2
3
4
5
6foreach (var (transform, speed) in
SystemAPI.Query<RefRW<LocalTransform>, RefRO<RotationSpeed>>())
{
transform.ValueRW = transform.ValueRO.RotateY(
speed.ValueRO.RadiansPerSecond * deltaTime);
}
这种方式上手简单,但在实体数量较大时,并不是最优解。原因如下:
- 依然运行在主线程,无法利用多核优势
- 依旧是顺序执行,没有并行
使用JobEntity来提高执行效率
1 | [] |
- JobEntity默认支持并行调度,不同Chunk之间可以并行操作。