谢谢你的帮助,这个是现在代码的样子 ,我想要在这个阶段初始化entity的其它Fragment我应该怎么做
#include "MassSpawnLocationProcessor.h"
#include "MassSpawnerTypes.h"
#include "MoveToTargetProcessor.h"
#include "MassEntityConfigAsset.h"
#include "MassEntitySpawnDataGeneratorBase.h"
#include "MoveTargetTrait.h"
#include "ThisLocalSpawn.generated.h"
/**
*
*/
UCLASS()
class MASSDEMO1_API UThisLocalSpawn : public UMassEntitySpawnDataGeneratorBase
{
GENERATED_BODY()
public:
virtual void Generate(UObject& QueryOwner, TConstArrayView<FMassSpawnedEntityType> EntityTypes, int32 Count, FFinishedGeneratingSpawnDataSignature& FinishedGeneratingSpawnPointsDelegate) const override
{
const FTransform& OwnerTransform = CastChecked<AActor>(&QueryOwner)->GetTransform();
if (Count <= 0 || !OwnerTransform.IsValid())
{
FinishedGeneratingSpawnPointsDelegate.Execute(TArray<FMassEntitySpawnDataGeneratorResult>());
return;
}
TArray<FMassEntitySpawnDataGeneratorResult> Results;
for (int32 i = 0; i <EntityTypes.Num(); i++)
{
const FMassSpawnedEntityType& EntityType = EntityTypes[i];
const int32 EntityCount = int32(Count * EntityType.Proportion);
if (EntityCount > 0)
{
FMassEntitySpawnDataGeneratorResult& Res = Results.AddDefaulted_GetRef();//生成新的实体
Res.NumEntities = EntityCount;//要生成当前种类的实体的数量
Res.EntityConfigIndex = i;
Res.SpawnDataProcessor = UMassSpawnLocationProcessor::StaticClass();
Res.SpawnData.InitializeAs<FMassTransformsSpawnData>();//初始化默认变量
FMassTransformsSpawnData& Transforms = Res.SpawnData.GetMutable<FMassTransformsSpawnData>();//申请一个引用
Transforms.Transforms.Reserve(Res.NumEntities);
int32 v = 0;
while (v<EntityCount)
{
FTransform& Transform = Transforms.Transforms.AddDefaulted_GetRef();
Transform.SetLocation(FVector(100));
v++;
}
}
}
FinishedGeneratingSpawnPointsDelegate.Execute(Results);
};
};