在虚幻的蓝图中暴露c++常量

Exposing C++ Constants to Blueprints In Unreal

本文关键字:暴露 c++ 常量      更新时间:2023-10-16

我正在寻找一些方法来让蓝图访问我将在AActor类中创建的预定义常量。

我基本上希望他们在我的蓝图中保持我的代码干净。例如,在严格的代码中,我可以像这样使用预处理器宏:

#define kDirectionUp 0
#define kDirectionDown 1

或者我可以直接使用常量:

const int kDirectionUp = 0;
const int kDirectionDown = 1;

然后,我不用再记住一个数字(0..3)和它们都指的是什么,我只需要输入

doSomething(kDirectionUp);

对于这个特定的范围来说,这不是一个大问题,但是我有其他大约8个不同的数字,它们都代表不同的值。在蓝图中处理这个问题会很痛苦,更不用说调试困难,其他程序员也很难知道这些神秘数字的含义。

我想在蓝图中复制这种行为,这样我就可以在某些地方插入一个常数,而不是必须记住12个左右的整数键数列表。


这个想法是让他们是静态的,所以UPROPERTYs将不工作在这里(据我所知)。

到目前为止,我唯一的想法是为每个常数创建函数,我可以简单地返回问题中的数字,但这不是最漂亮的解决方案,更不用说它们还需要有某种参数,在这种情况下,这些参数只能是假的。这是丑陋的。

是否有任何方法可以让我在虚幻的蓝图中暴露常量值来实现这一点?在这种情况下,它们都将是整数,但是对于其他数据类型的解决方案非常感谢

在做了更多的挖掘之后,我发现虚幻蓝图支持枚举!

这似乎对我有效。必须通过筛选从整数转换为枚举值并不理想,但这比必须使用一系列分支语句来检查整数值要干净得多。

UENUM(BlueprintType)
enum class EDirection : uint8
{
    D_Up = 0    UMETA(DisplayName = "Up"),
    D_Right = 1 UMETA(DisplayName = "Right"),
    D_Down = 2  UMETA(DisplayName = "Down"),
    D_Left = 3  UMETA(DisplayName = "Left")
};