コード例 #1
0
        // 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();
        }
コード例 #2
0
    // 座標計算のみ平行処理して行い、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);
        }
    }