using Unity.Collections;
using UnityEngine;
using UnityEngine.Jobs;
public struct mJob : IJobParallelForTransform {
[ReadOnly]
public NativeArray<Vector3> position;
public void Execute(int index, TransformAccess transform)
{
transform.position = position[index];
}
}
using UnityEngine;
using Unity.Collections;
using UnityEngine.Jobs;
using Unity.Jobs;
public class Script2 : MonoBehaviour {
public Transform[] cubes;
void Update () {
if (Input.GetMouseButtonDown(0))
{
//随机设置坐标
NativeArray<Vector3> position = new NativeArray<Vector3>(cubes.Length,Allocator.Persistent);
for (int i = 0; i < position.Length; i++)
{
position[i] = Vector3.one * Random.Range(i, i + 10);
}
//设置Transform
TransformAccessArray transformArray = new TransformAccessArray(cubes);
mJob job = new mJob { position = position };
JobHandle jobHandle = job.Schedule(transformArray);
jobHandle.Complete();//等待线程结束
Debug.LogError("结束同步");
transformArray.Dispose();
position.Dispose();
}
}
}只要继承IJobParallelForTransform接口,并且实现Execute()方法,就可以在工作线程中处理耗时操作了,同步坐标等。