// JobSystemで計算するテスト void JobSystemCalculation(float deltaTime) { // 回転計算用jobの作成 MyParallelForUpdate rotateJob = new MyParallelForUpdate() { Accessor = this._dokabenStructs, DeltaTime = deltaTime, }; // Jobの実行 this._jobHandle = rotateJob.Schedule(this._maxObjectNum, this._innerloopBatchCount); // Jobが終わるまで処理をブロック this._jobHandle.Complete(); }
// 座標計算のみ平行処理して行い、Transformに入れる部分だけは MainThreadにしたバージョンです private void UpdateWithIJobParalellFor(float tm) { // 座標計算を行うだけの jobを作成します MyParallelForUpdate myParallelJob = new MyParallelForUpdate() { // structの初期値を設定します accessor = this.myStructNativeArray, time = tm, objNum = this.objectNum }; // 配列の要素数と、処理の分割数を指定して、Jobを発行します jobHandle = myParallelJob.Schedule(objectNum, PreferJobNum); // 上記で発行したJobが終わるまで処理をブロックします jobHandle.Complete(); // 最後に MainThread上で positionとrotationのセットを行います for (int i = 0; i < objectNum; ++i) { transformArray[i].SetPositionAndRotation(myStructNativeArray[i].position, myStructNativeArray[i].rotation); } }