在虚幻中将C ++常量暴露给蓝图

时间:2015-07-13 09:47:03

标签: c++ constants unreal-engine4 unreal-blueprint

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

我基本上希望他们在我的蓝图中保持我的代码清洁。例如,在严格的代码中,我能够使用这样的预处理器宏:

#define kDirectionUp 0
#define kDirectionDown 1

或者我可以使用常量:

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

然后,不必记住一个数字(0..3)以及它们所引用的内容,我只需输入

doSomething(kDirectionUp);

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

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

这个想法是让他们保持静止,所以UPROPERTYs不会在这里工作(据我所知)。

到目前为止我唯一的想法是为每个常量创建函数,我可以调用它只返回有问题的数字,但这不是最漂亮的解决方案,更不用说它们还需要某种参数,在这种情况下,这只是必须是假人。那很难看。

我有什么方法可以在Unreal中将常量值暴露给Blueprints来实现这个目的吗?在这种情况下,它们都将是整数,但适用于其他数据类型的解决方案非常赞赏。

1 个答案:

答案 0 :(得分:0)

在进行了一些挖掘之后,我发现Unreal Blueprints支持枚举!

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

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")
};