25. public struct Engine : IComponentData {
public float power;
}
IComponentDataを継承
値のみ持つ
何もデータを持たない事もある
public class Engine : MonoBehaviour {
public float power;
}
MonoBehaviour
ComponentData
定義の違い
構造体
26. var entity_manager = World.Active.GetOrCreateManager<EntityManager>();
var entity = entity_manager.CreateEntity(typeof(Engine));
EntityManagerで生成
var obj = new GameObject(“obj”, typeof(Engine));
MonoBehaviour
ComponentData
生成の違い
42. GameObject 1 Data Renderer Data
Data Data Data Data Data Data Data Data Data Data Data Data
Data Data Data
手続き的な手法を踏まずにオブジェクトをロード
Entity Entity Entity Entity Entity
Data Data Data Data
レイアウトが確定しているので、
ロードしたデータをそのまま
メモリに展開
Data Entity Entity
Data Data Data Data Entity Entity
ちょっと未来話
File
74. 問題が起こりそうならエラーを出してくれる
InvalidOperationException: The previously scheduled job Job1:AJob
writes to the NativeArray AJob.positions. You are trying to schedule a
new job Job1:BJob, which writes to the same NativeArray (via
BJob.positions).
要約:複数のジョブが同じNativeArrayに同時に書き込むかも
75. InvalidOperationException: The native container has been
declared as [WriteOnly] in the job, but you are reading from it.
要約:書込専用のNativeArrayを読み込んじゃあかん
問題が起こりそうならエラーを出してくれる
ありがたや
76. ジョブの依存関係
Scheduleの引数にJobHandleを入れる
void Update() {
var ajob = new 弾の判定ジョブ() { …};
var bjob = new 結果を受け取るジョブ() { … };
var handle = ajob.Schedule(positions.Length, 8);
handle = bjob.Schedule(handle);
}
bJobはaJobが
完了したら実行