Unity DOTS コンポーネントの概要

最近、ついに DOTS の正式バージョンがリリースされました。誰もが Unity DOTS 開発を開始し、学び、習得できるように、以下で DOTS の重要な概念をいくつか共有しましょう。

Unity DOTS におけるエンティティとしての Entity は、データを直接保存するのではなく、キャリアとして個々のコンポーネントにデータを保存します。各 Entity は、異なる Entity タイプを表す ComponentData の異なる組み合わせを取得します。これらの組み合わせを記述するオブジェクトは ArchType と呼ばれます。コンポーネントにはエンティティ内のデータが含まれており、システムへの読み取りおよび書き込みアクセスを提供します。

コンポーネントを定義するときは、IcomponentData インターフェイス クラスを継承する必要があります。IcomponentData にはメソッドが定義されておらず、この構造タイプを ECS の ComponentData のコンポーネント クラスとしてマークするだけです。struct を使用して ComponentData を定義する場合、それはアンマネージド (ガベージ コレクション) オブジェクトを使用していることを意味し、内部のデータ メンバーもアンマネージドである必要があります。マネージド データ メンバーとオブジェクトを使用したい場合は、構造体をクラスに変更します。定義します。

コンポーネントのメモリは、チャンク (16kib) に基づいて特定の ArchType サイズ (異なるコンポーネントを組み合わせた後のメモリ サイズ) のメモリを割り当て、コンポーネントはこのメモリ ブロックの特定の部分に属します。たとえば、タイプ A のエンティティは A、B、および C コンポーネントで構成されており、ArchType は [A, B, C] となり、ArchType は各コンポーネントの合計になります。Chunk を通じて、Entity の特定の ComponentData がこのメモリ ブロックの一部となるように ArchType メモリを割り当てます。

チャンク(16Kib): 【[A, B, C, …],[A, B, C, …],[A, B, C, …],[A, B, C, …],[A, B 、C、…]]

DOTS 開発で一般的に使用されるコンポーネント タイプがいくつかあり、それらを以下にまとめます。

アンマネージ コンポーネント: 最も一般的に使用されるアンマネージ コンポーネント タイプですが、内部のデータ メンバーはアンマネージである必要があるため、タイプは制限されます。

管理対象コンポーネント: 管理可能なコンポーネントのタイプ。内部のデータ メンバーも任意のタイプにすることができます。

共有コンポーネント: 複数の Entity インスタンスが ComponentData のメモリを共有します。

Cleanup コンポーネント: Entity の 1 つに CleanupComponent がある場合、Entity を破棄すると、他のすべてのコンポーネントがクリーンアップされます。

タグ コンポーネント: タグとして機能するアンマネージド コンポーネント オブジェクト。タグ コンポーネントを使用してエンティティをフィルタリングできます。

バッファコンポーネント: 配列のサイズを変更できる配列データを定義します。

コンポーネントを有効にする: ArchType を変更するとパフォーマンスが大幅に消費されるため、Remove コンポーネントのようにエンティティの ArchType を変更する代わりに、コンポーネントを有効または無効にすることができます。

Unity DOTS ドキュメントの詳細については、私たちをフォローして、関連する学習資料とコードを入手してください。

おすすめ

転載: blog.csdn.net/voidinit/article/details/133889806