【问题标题】:What is the right way to blend C++ and Blueprint?混合 C++ 和蓝图的正确方法是什么?
【发布时间】:2019-07-31 18:18:17
【问题描述】:

所以我最近从统一切换到使用虚幻引擎。我对 C++ 有一些经验,但对蓝图没有经验。显然,我想用 C++ 做所有事情,但我在网上读到两者都使用可能会更好。现在我对如何混合这两个感到困惑。我想到了两种方法: 1. 使用 Blueprint 声明类,然后使用 C++ 编写处理逻辑的组件(类似于 Unity 中的 MonoBehavior),这些逻辑将被添加到蓝图类中。 2. 类及其所有组件和变量都是用 C++ 编写的,然后蓝图将从该类继承。蓝图可用于快速更改实例变量的值。

这两种方法都好吗?有更好的方法吗?

【问题讨论】:

    标签: unreal-engine4 unreal-blueprint


    【解决方案1】:

    我以某种方式使用这两种方法。所以我会在 C++ 中定义每个参与者,并让 BP 继承它。但我也使用在 BP 中继承的用 C++ 编写的组件,我将它们添加到 BP 参与者类中。

    Actor 是您在游戏中看到和使用的实际对象,组件用于在 Actor 之间共享逻辑,而无需在它们在游戏世界中没有任何共同点时相互继承。

    【讨论】:

    • 您是否为项目中的每个 C++ 参与者创建了一个 BP 类?换句话说,如果您有十个 C++ 演员,您将创建十个 BP 类。为什么每个 C++ actor 类都有一个 BP 类有用?我一直在阅读 Unreal 教程,他们为每个 C++(actor、GameMode 等)类都这样做,我不明白他们为什么这样做。谢谢。
    • 是的,我为所有演员都这样做了。至于为什么,这是因为基本上与视觉效果或音频方面的演员逻辑无关的任何事情都是在 BP 中完成的。这更容易改变,对于其他不熟悉 C++ 的人来说也是如此。在我的例子中,所有其他逻辑都是用 C++ 完成的。
    • 谢谢。你的回答对我来说很有意义。但我不这样做,例如,我可以更改使用 UPROPERTY(VisibleAnywhere, Category = "Components") 声明的 UStaticMeshComponent 的静态网格。所以,我真的不明白为什么我必须为每个 C++ 类创建一个 BP 类。再次感谢您的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2018-05-29
    • 1970-01-01
    • 2015-11-23
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多