簡體   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