Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Unity2018.2.0b4 [EntityComponentSystem(ECS) ver0.0.12-preview1]
- using UnityEngine;
- using Unity.Entities;
- using Unity.Collections;
- using System.Linq;
- using System.Collections.Generic;
- using Unity.Jobs;
- struct DATA1 : IComponentData
- {
- public int val;
- }
- //JobComponentSystemを継承したクラスはComponentData同士の依存関係をうまく処理してくれるとのこと。
- class JOB_SYSTEM : JobComponentSystem {
- //IJobParallelForで書く場合の並列化
- [ComputeJobOptimization]
- struct JOB : IJobParallelFor {
- //並列化したいデータ
- public ComponentDataArray<DATA1> _data;
- public void Execute(int index)
- {
- var P = _data[index];
- P.val += 10;
- _data[index] = P;
- }
- }
- //JobComponentSystem
- protected override JobHandle OnUpdate(JobHandle inputDeps)
- {
- //ComponentGroup経由でComponentDataArrayを取得
- var data = this.GetComponentGroup(typeof(DATA1)).GetComponentDataArray<DATA1>();
- //JOBにdataを渡す
- var job = new JOB()
- {
- _data = data
- };
- //実行
- var outputdeps = job.Schedule(data.Length, 16, inputDeps);
- return outputdeps;
- }
- }
- class ECS_SCRIPT : MonoBehaviour
- {
- EntityManager EM;
- private void Start()
- {
- EM = World.Active.GetOrCreateManager<EntityManager>();
- var archeType = EM.CreateArchetype(typeof(DATA1));
- var instance = new NativeArray<Entity>(50000, Allocator.Temp);
- EM.CreateEntity(archeType, instance);
- instance.Dispose();
- }
- }
Add Comment
Please, Sign In to add comment