将 C++ 常量暴露给虚幻中的蓝图
Exposing C++ Constants to Blueprints In Unreal
我正在寻找某种方法让蓝图能够访问我将在 AActor class 中创建的预定义常量。
我基本上希望他们在我的蓝图中保持我的代码干净。例如,在严格的代码中,我可以像这样使用预处理器宏:
#define kDirectionUp 0
#define kDirectionDown 1
或者我可以只使用常量:
const int kDirectionUp = 0;
const int kDirectionDown = 1;
然后,我不必记住数字 (0..3) 和它们所指的内容,只需键入
doSomething(kDirectionUp);
对于这个特定范围来说,这不是什么大问题,但我有其他大约 8 个不同的数字,它们都代表不同的值。这在蓝图中处理起来会很痛苦,更不用说难以调试,而且任何其他程序员都很难知道这些神秘数字中的每一个的含义。
我想在蓝图中复制这种行为,这样我就可以在某些地方插入一个常量,而不必记住 12 个左右整数键数字的列表。
想法是让它们成为静态的,因此 UPROPERTY 在这里不起作用(据我所知)。
到目前为止我唯一的想法是为每个常量创建函数,我可以简单地调用它 return 有问题的数字,但这不是最好的解决方案,更不用说他们还需要有某种参数,在这种情况下只能是虚拟参数。太丑了
有什么方法可以让我在虚幻引擎中向蓝图公开常量值来实现这一点?在这种情况下,它们都将是整数,但适用于其他数据类型的解决方案非常赞赏。
经过进一步挖掘,我发现 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")
};
我正在寻找某种方法让蓝图能够访问我将在 AActor class 中创建的预定义常量。
我基本上希望他们在我的蓝图中保持我的代码干净。例如,在严格的代码中,我可以像这样使用预处理器宏:
#define kDirectionUp 0
#define kDirectionDown 1
或者我可以只使用常量:
const int kDirectionUp = 0;
const int kDirectionDown = 1;
然后,我不必记住数字 (0..3) 和它们所指的内容,只需键入
doSomething(kDirectionUp);
对于这个特定范围来说,这不是什么大问题,但我有其他大约 8 个不同的数字,它们都代表不同的值。这在蓝图中处理起来会很痛苦,更不用说难以调试,而且任何其他程序员都很难知道这些神秘数字中的每一个的含义。
我想在蓝图中复制这种行为,这样我就可以在某些地方插入一个常量,而不必记住 12 个左右整数键数字的列表。
想法是让它们成为静态的,因此 UPROPERTY 在这里不起作用(据我所知)。
到目前为止我唯一的想法是为每个常量创建函数,我可以简单地调用它 return 有问题的数字,但这不是最好的解决方案,更不用说他们还需要有某种参数,在这种情况下只能是虚拟参数。太丑了
有什么方法可以让我在虚幻引擎中向蓝图公开常量值来实现这一点?在这种情况下,它们都将是整数,但适用于其他数据类型的解决方案非常赞赏。
经过进一步挖掘,我发现 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")
};