概要
単純化された Mass プロセッサ/クエリ API は、Mass プロセッサ ロジックを作成する際のボイラープレートを削減し、コードの可読性と型の安全性を向上させることを目的としています。 この API はオプションであり、現在のスタイルも引き続きサポートされます。
QueryExecutor を使用して Mass プロセッサを作成する
次の例に従って、.cpp にUE::Mass::FQueryExecutor を継承する構造体を作成します。
struct FExampleExecutor : public UE::Mass::FQueryExecutor
{
UE::Mass::FQueryDefinition<
UE::Mass::FMutableFragmentAccess<FExampleFragmentA>,
UE::Mass::FConstSubsystemAccess<UExampleSubsystem>,
UE::Mass::FMassTagRequired<FExampleTag>
> Accessors{ *this };
virtual void Execute(FMassExecutionContext& Context)
現時点では、QueryExecutors は通常の UMassProcessor に所有されている必要があります。 この要件は、今後の更新で削除される予定です。
ラッパー UMassProcessor を作成するには、次の手順に従います。
UMassProcessor から継承するクラスを作成します。
ConfigureQuery や Execute 関数をオーバーライドしないでください。
次のようにして、そのプロセッサのコンストラクタに QueryExecutor を作成します。
C++UE::Mass::FQueryExecutor::CreateQuery<QueryType>(...)
制限事項
現時点では、Mass Phase Executor との連携には引き続き UMassProcessor が必要です。 これは今後のアップデートで修正される予定です。
「FQueryDefinition」テンプレートの宣言には、クエリ型の完全な定義が必要です。そのため、ヘッダ ファイルで定義する場合は事前定義されたクエリ定義に限定する必要があります (広範なインターフェース ヘッダには含めません)。 一般的なベスト プラクティスは、使用する .cpp ファイルで非公開に宣言することです。