개요
간소화된 매스 프로세서/쿼리 API(Mass Processor/Query API)는 매스 프로세서 로직 생성을 위한 보일러플레이트를 줄이고, 코드 가독성과 타입 안전성을 높이는 것을 목표로 합니다. 이는 선택적 API이며 현재 스타일은 계속 지원될 예정입니다.
QueryExecutor로 매스 프로세서 생성하기
.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)
현재 QueryExecutor는 일반 UMassProcessor가 소유해야 합니다. 이 요구 사항은 향후 업데이트에서 제거될 예정입니다.
래퍼 UMassProcessor를 생성하려면 다음 단계를 따릅니다.
UMassProcessor에서 상속되는 클래스를 생성합니다.
ConfigureQuery 또는 실행 함수를 오버라이드하지 마세요.
해당 프로세서의 생성자에서 다음과 같이 QueryExecutor를 생성합니다.
C++UE::Mass::FQueryExecutor::CreateQuery<QueryType>(...)
제한 사항
현재 매스 페이즈 실행기(Mass Phase Executor)와 인터페이싱하려면 여전히 UMassProcessor가 필요합니다. 이는 향후 업데이트에서 해결될 예정입니다.
FQueryDefinition 템플릿의 선언에는 쿼리 타입의 전체 정의가 필요하므로, 헤더 파일에서 이를 수행할 때는 사전 정의된 쿼리 정의(더 큰 인터페이스 헤더의 일부가 아닌)로 제한해야 합니다. 일반적인 모범 사례는 해당 쿼리를 사용하는 .cpp 파일에서 프라이빗으로 선언하는 것입니다.