繁体   English   中英

虚幻引擎C ++ SpawnActor Cast

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM