【问题标题】:Exposing C++ Constants to Blueprints In Unreal在 Unreal 中向蓝图公开 C++ 常量
【发布时间】:2015-07-13 09:47:02
【问题描述】:

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

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

#define kDirectionUp 0
#define kDirectionDown 1

或者我可以只使用常量:

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

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

doSomething(kDirectionUp);

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

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


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

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

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

【问题讨论】:

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


    【解决方案1】:

    经过一番挖掘,发现虚幻蓝图支持枚举!

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 2020-03-02
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 2010-09-21
      相关资源
      最近更新 更多