[英]Unreal Engine C++ SpawnActor Cast
我正在用Unreal Engine 4.15.0编写一个多人游戏,并且几乎可以正常工作,只是我无法弄清它的行为异常。 问题是我有一个从C ++基类AOnlinePawn继承的OnlinePawn蓝图。 每当有玩家加入比赛时,我都会生成此蓝图并将其投射到我不断更新以接收数据的数组中。
问题在于,以下尝试将函数返回的AActor *强制转换为AOnlinePawn *的代码失败,并返回null,这确实是一个强制转换问题。
演员:
playersInstances[i] = Cast<AOnlinePawn>(GetWorld()->SpawnActor(OnlinePlayer->GeneratedClass, &position, &rotator));
蓝图参考:
static ConstructorHelpers::FObjectFinder<UBlueprint> OnlinePlayerBP(TEXT("Blueprint'/Game/Blueprints/OnlinePawn.OnlinePawn'"));
OnlinePlayer = OnlinePlayerBP.Object;
蓝图描述,说明父类:
那么,这是什么问题呢? 无论如何,我可以改善我的工作流程吗? 有解决方法吗?
我认为您的演员表不正确。 SpawnActor是一个模板函数,您不应像这样手动进行转换。 相反,您应该简单地为其指定要使用的类型。 像这样尝试:
AOnlinePawn* NewActor = GetWorld()->SpawnActor<AOnlinePawn>(GetClass(), &position, &rotator);
编辑:
别客气。 因此,如果您实际上想在代码中引用蓝图,则可以使用构造函数帮助器或类查找器。
static ConstructorHelpers::FObjectFinder<UBlueprint> onlineSpawnBP(TEXT("Blueprint'/Game/FirstPersonCPP/Blueprints/OnlineSpawn'")); //replace with the right path to your blueprint in your project
if (onlineSpawnBP)
{
AOnlinePawn* NewActor = GetWorld()->SpawnActor<AOnlinePawn>(GetClass(), &position, &rotator);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.