【问题标题】:What is the C++ Equivalent of FindPlayerStart in Unreal Engine Blueprints虚幻引擎蓝图中 FindPlayerStart 的 C++ 等效项是什么
【发布时间】:2018-05-08 19:26:28
【问题描述】:

虚幻引擎蓝图中 FindPlayerStart 的 C++ 等效项是什么?

GameModeBase 上的函数不是虚拟的;即使它可以在蓝图中被覆盖。

4.3 左右的许多旧示例似乎表明存在 FindPlayerStart_Implementation 函数,但我在 4.19 中找不到它。

如何实现与覆盖 FindPlayerStart 并在蓝图中返回我自己的 PlayerStart Actor 相同的行为?

【问题讨论】:

  • 我之前没有使用过虚幻引擎,但我找到了this。这有帮助吗?您可以通过点击超链接找到有关AActorAControllerFString 的详细信息。
  • 这是我在上面找到的方法,之前在蓝图中使用过。蓝图允许覆盖它,但它在 C++ 中不是虚拟的。

标签: c++ unreal-engine4


【解决方案1】:

Blueprint 中的“覆盖”实际上是一个由 C++ 基类发布的蓝图事件。

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

因此,您不能直接在 C++ 中进行子类化和扩展。

如果您想调整 C++ 代码中的行为,请在您的游戏模式类中实现一个蓝图函数 - 一个标记为 BlueprintPureUFUNCTION,以便您可以将其作为节点添加到蓝图中。

// .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& 参数并将其连接到原始节点。

this UnrealEngine.com post

【讨论】:

    【解决方案2】:

    我通过虚幻引擎论坛发起人找到了我的答案:here

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2015-02-04
      • 2019-09-10
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多