【发布时间】:2020-10-08 02:59:05
【问题描述】:
所以我正在开发一款基于小队的策略游戏,例如《英雄连》。我目前仍在构建玩家将与之交互并下达命令的小队框架。我决定使用数据表来定义小队和单位的内容,但在弄清楚我的 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 的类,并带有相应的数据(在这种情况下,需要生成多少个)。
【问题讨论】:
标签: c++ unreal-engine4