PrefabからEntityを生成(Entity Component System)

PrefabからEntityを生成(Entity Component System)

ECS(Entity Component System) 基礎中の基礎で作成したCubeを大量に生成します。

Script

Cube

CubeDataで使用するデータを定義しています。

Entityの取得及びComponentの追加を行っています。

Cubeを動かすための処理です。今回は大量にCubeを動かすのでJobSytemを使用して並列に実行しています。

Cubeの生成

Prefabを使用してCubeを生成します。以下のScriptはCubeを生成する際に使用するデータを定義しています。

Cubeを生成するためのEntityの取得とComponentの追加を行っています。

Cubeを生成するためのSystemです。

  • RequireForUpdate
    SubScene内に指定したComponentがないとSystemが起動しないようにできます。よって、このSystemはConfigが存在しない場合は実行されません。
  • SystemAPI.GetSingleton
    Componentを一つだけ取得できます。これを利用してConfigを取得します。
  • state.EntityManager.Instantiate
    指定した数だけPrefabからEntityを生成します。
  • state.Enabled = false
    Systemを無効にします。これにより、Systemが一度だけ実行されるようにしています。

設定と実行結果

CubeAuthoringを追加したPrefabを作成します。

空のGameObjectを作成し、ConfigAuthoringを追加します。これをSubScene内へ移動します。今回はSpawnCount=5000、RandomSeed=10としました。

これを実行すると以下のように、回転するCubeが大量に生成されます。

参考ページ

YouTube:Unity ECS で高速化!とりあえずキャラを 5,000 体出してみよう!