使用Handle处理作业之间的依赖:
using Unity.Collections;
using Unity.Jobs;
using UnityEngine;
public struct MyJob : IJob
{
public float a;
public float b;
public NativeArray<float> result;
public void Execute()
{
result[0] = a + b;
}
}
public struct AddOnJob : IJob
{
public NativeArray<float> result;
public void Execute()
{
result[0] += 1;
}
}
public class JobTest : MonoBehaviour
{
private void Start()
{
NativeArray<float> result = new NativeArray<float>(1, Allocator.TempJob);
var jobData = new MyJob() { a = 10, b = 10, result = result };
var firstHandle = jobData.Schedule();
var incJobData = new AddOnJob() { result = result };
var secondHandle = incJobData.Schedule(firstHandle);// 利用handle处理依赖
secondHandle.Complete();// 等待Job 2执行完毕
float aPlusB = result[0];
result.Dispose();
Debug.Log(aPlusB);
}
}
对于多个依赖,可以使用如下静态函数结合起来:
public static JobHandle CombineDependencies(JobHandle job0, JobHandle job1);