Что такое эквивалент C ++ FindPlayerStart в Unreal Engine Blueprints - PullRequest
0 голосов
/ 08 мая 2018

Что такое эквивалент C ++ FindPlayerStart в Unreal Engine Blueprints?

Функция на GameModeBase не является виртуальной; даже если это может быть переопределено в чертежах.

Множество старых примеров из 4.3, похоже, предполагают, что есть функция FindPlayerStart_Implementation, но я не могу найти ее в 4.19.

Как мне добиться того же поведения, что и при переопределении FindPlayerStart и возвращении моего собственного PlayerStart Actor в проекте?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Я нашел свой ответ через своего рода Unreal Engine Promoter: здесь

0 голосов
/ 09 мая 2018

Переопределение в Blueprint на самом деле является событием, которое публикуется базовым классом C ++.

 UFUNCTION(BlueprintNativeEvent, Category="Game")
 class AActor* FindPlayerStart( AController* Player, const FString& IncomingName = TEXT("") );

Итак, вы не наследуете и не расширяете непосредственно в C ++.

Если вы хотите настроить поведение в коде C ++, внедрите в свой игровой режим функцию Blueprint - UFUNCTION, помеченную как BlueprintPure, чтобы вы могли добавить ее в план в качестве узла.

// .h
UFUNCTION(BlueprintPure, Category=Game, meta=(DisplayName="CustomPlayerStart"))
AActor* CustomPlayerStartLogic(AController* Player);


// .cpp
AActor* MyCustomGameMode::CustomPlayerStartLogic(AController* Player)
{
 /// your logic here
 return ThePlayerActor;
}

Затем используйте этот новый узел в проекте вашего игрового режима в переопределении «функции» FindPlayerStart в игровом режиме - пока он возвращает AActor*, вы можете передать его в узел возврата переопределения проекта. Я не потрудился взять строковый ввод из переопределенной функции в этом примере, но если ваша логика требует этого, вы можете добавить аргумент const FString& к функции и подключить его к исходному узлу.

См. это сообщение UnrealEngine.com

...