Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(UE4 C++)将数据表行名称转换为类名以生成参与者_C++_Unreal Engine4 - Fatal编程技术网

(UE4 C++)将数据表行名称转换为类名以生成参与者

(UE4 C++)将数据表行名称转换为类名以生成参与者,c++,unreal-engine4,C++,Unreal Engine4,所以我在做一个以团队为基础的战略游戏,比如英雄连队。我目前仍在建立一个球队框架,球员将与之交互并下达命令。我已经决定使用数据表来定义小队和部队的内容,并且在计算CreateUnit函数如何工作时遇到了麻烦,该函数将根据小队参与者的请求处理生成士兵。我将两个参数传递给它,即从数据表的行名称中获取的FName形式的请求类名和必须生成的该类型的数量。我在尝试将类名变量输入到SpawnActor函数时遇到了麻烦。这是相关代码的精简版本: TArray<FName> ClassNames =

所以我在做一个以团队为基础的战略游戏,比如英雄连队。我目前仍在建立一个球队框架,球员将与之交互并下达命令。我已经决定使用数据表来定义小队和部队的内容,并且在计算CreateUnit函数如何工作时遇到了麻烦,该函数将根据小队参与者的请求处理生成士兵。我将两个参数传递给它,即从数据表的行名称中获取的FName形式的请求类名和必须生成的该类型的数量。我在尝试将类名变量输入到SpawnActor函数时遇到了麻烦。这是相关代码的精简版本:

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