1

我正在寻找某种方法让蓝图能够访问我将在 AActor 类中创建的预定义常量。

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

#define kDirectionUp 0
#define kDirectionDown 1

或者我可以只使用常量:

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

稍后,我不必记住一个数字 (0..3) 以及它们所指的内容,我只需键入

doSomething(kDirectionUp);

对于这个特定的范围来说,这并不是什么大问题,但我还有其他一些有大约 8 个不同的数字,它们都代表不同的值。在蓝图中处理这将是一件痛苦的事,更不用说难以调试并且任何其他程序员都难以了解这些神秘数字中的每一个的含义。

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


这个想法是让它们是静态的,所以 UPROPERTY 在这里不起作用(据我所知)。

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

我有什么办法可以在虚幻中向蓝图公开常量值来实现这一点?在这种情况下,它们都将是整数,但非常感谢适用于其他数据类型的解决方案。

4

1 回答 1

0

After doing some more digging, I found that Unreal Blueprints support enumeration!

This appears to have worked for me. Having to convert from integers to enumerated values via screening is less than ideal, but it is much cleaner than having to have a series of branch statements to check integer values.

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")
};
于 2015-07-13T10:30:42.473 回答