[Unity][ECS] EntitasのContext(旧Pool)について

EntitasでContextを複数作る意味が今までよく分からなかったんですが。

文字通り文脈(Context)として使うみたいですね。

どう言う事かというと、同じコンポーネントでも使い方が違う場合がありますが、そういうときにContextを分けてSystemを複数作成し対応できる様にしているみたいです。

 

例をあげるとShmupのサンプルでBulletとCoreでContextを分けていて、Assetコンポーネントを追加した際に、Coreに属している場合は、ViewをロードしてViewコンポーネントを追加する様になってるのですが。

Bulletに属している場合はViewObjectPoolコンポーネントを追加する様になっていて、オブジェクトプーリングを行う様になっています。

同じAssetコンポーネントを追加するというイベントに対する処理なのですが、文脈が違うので違う処理になっているんですね。

この文脈が分かれている利点が何かというと、Assetコンポーネントはエディター拡張で表示が独自のものになっているんですけども。

文脈が分かれていない場合BulletAssetコンポーネントとCoreAssetコンポーネントに分けないと駄目でその分エディター拡張を増やさないと駄目だったりします。

システムはどっちみち文脈の分作らないとだめなので、Contextで分けてしまった方がエディター拡張の分、若干楽になるのではないかなーと思います。

 

ここまで書いておいてなんですが、BulletコンポーネントとかEnemyコンポーネントを作って、それでフィルタリングする方が楽かもしれません。