2015-07-13 114 views
1

我正在寻找一种方法让蓝图能够访问我将在AActor类中创建的预定义常量。将C++常量暴露给虚幻中的蓝图

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

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

然后,而不必记住一个号码(:

#define kDirectionUp 0 
#define kDirectionDown 1 

或者,我可以只使用常数0..3)以及他们都指,我只需键入

doSomething(kDirectionUp); 

这不是为这个特定的范围内一个巨大的交易,但我有其他人有大约8个不同的数字,都代表differen t值。在蓝图中处理会很痛苦,更不用说难以调试,而且任何其他程序员都难以知道每个这些神秘数字的含义。

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


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

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

有没有什么办法可以让我在Unreal中将常量值暴露给Blueprints?在这种情况下,它们都将是整数,但适用于其他数据类型的解决方案是非常感谢

回答

0

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

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

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