(UE4 C++)将数据表行名称转换为类名以生成参与者
所以我在做一个以团队为基础的战略游戏,比如英雄连队。我目前仍在建立一个球队框架,球员将与之交互并下达命令。我已经决定使用数据表来定义小队和部队的内容,并且在计算CreateUnit函数如何工作时遇到了麻烦,该函数将根据小队参与者的请求处理生成士兵。我将两个参数传递给它,即从数据表的行名称中获取的FName形式的请求类名和必须生成的该类型的数量。我在尝试将类名变量输入到SpawnActor函数时遇到了麻烦。这是相关代码的精简版本:(UE4 C++)将数据表行名称转换为类名以生成参与者,c++,unreal-engine4,C++,Unreal Engine4,所以我在做一个以团队为基础的战略游戏,比如英雄连队。我目前仍在建立一个球队框架,球员将与之交互并下达命令。我已经决定使用数据表来定义小队和部队的内容,并且在计算CreateUnit函数如何工作时遇到了麻烦,该函数将根据小队参与者的请求处理生成士兵。我将两个参数传递给它,即从数据表的行名称中获取的FName形式的请求类名和必须生成的该类型的数量。我在尝试将类名变量输入到SpawnActor函数时遇到了麻烦。这是相关代码的精简版本: TArray<FName> ClassNames =
TArray<FName> ClassNames = ContainerDataTable->GetRowNames();
// Call CreateUnit function for every request until squad is full
for (auto& RequestedUnitClass : ClassNames)
{
// Select Row
FUnitContainerData* SelectedRow = ContainerDataTable->FindRow<FUnitContainerData>(RequestedUnitClass, "");
// Find number requested
int AmountToSpawn = SelectedRow->NumberOfUnits;
CreateUnit(RequestedUnitClass, AmountToSpawn);
}
void AUnitContainer::CreateUnit(FName Classname, int Amount)
{
// Determine class from row name
FName RequestedUnitClass = Classname;
// Spawn unit from Class
FActorSpawnParameters SpawnInfo;
RequestedUnitClass* Unit = GetWorld()->SpawnActor<RequestedUnitClass>(RequestedUnitClass::StaticClass(), SpawnLocation, SpawnRotation, SpawnInfo);
我遇到的问题是变量RequestedUnitClass不被接受为SpawnActor函数参数的一部分。我还在学习C++,我觉得我只是在传递错误的数据。我想使用行名称作为类名的变量,但这是可能的吗?与名为SoldierType1的行一样,解析时会生成名为SoldierType1的类,在本例中,使用相应的数据生成多少个类。从
template<class T>
T * SpawnActor
(
UClass * Class,
FVector const & Location,
FRotator const & Rotation,
const FActorSpawnParameters & SpawnParameters
)
AActor* Unit = GetWorld()->SpawnActor<AActor>(RequestedUnitClass, SpawnLocation, SpawnRotation, SpawnInfo);
...
// do some IsA class checks to figure out which class to cast the actor to