Unity的Job System提供了一种方式,使你能够编写多线程代码来利用现代多核CPU。其中,IJob、IJobParallelFor和IJobFor是三种不同的任务类型。
1. IJob: 这是最基本的工作类型,它表示一个可以在任何时候运行的任务。这个接口只有一个Execute方法,该方法没有参数。当你调度一个IJob时,它将在后台运行,不会阻塞主线程。
2. IJobParallelFor: 这个接口表示一个可以并行执行的任务。它的Execute方法带有一个整数参数,表示当前的迭代索引。当你调度一个IJobParallelFor,Unity将尽可能地在多个线程上并行运行它。
3. IJobFor: 这是Unity 2021.2版本新增的接口,用于处理不需要并行处理的数据。它的Execute方法带有一个整数参数,表示当前的迭代索引。其主要目的是利用Burst编译器优化代码,而不是并行执行任务。
4.IJobParallelForTransform:这是专门用于并行处理Transform组件的Job接口。实现此接口的Job将在多个线程中并行运行。需要实现Execute方法,这个方法的参数是一个int和一个TransformAccess,分别表示当前处理的Transform的索引和引用。注意,修改的transfrom尽量不要同一个父节点,不然处理多个transfrom还是一个线程进行处理