在虚幻的蓝图中暴露c++常量
Exposing C++ Constants to Blueprints In Unreal
我正在寻找一些方法来让蓝图访问我将在AActor类中创建的预定义常量。
我基本上希望他们在我的蓝图中保持我的代码干净。例如,在严格的代码中,我可以像这样使用预处理器宏:
#define kDirectionUp 0
#define kDirectionDown 1
或者我可以直接使用常量:
const int kDirectionUp = 0;
const int kDirectionDown = 1;
然后,我不用再记住一个数字(0..3)和它们都指的是什么,我只需要输入
doSomething(kDirectionUp);
对于这个特定的范围来说,这不是一个大问题,但是我有其他大约8个不同的数字,它们都代表不同的值。在蓝图中处理这个问题会很痛苦,更不用说调试困难,其他程序员也很难知道这些神秘数字的含义。
我想在蓝图中复制这种行为,这样我就可以在某些地方插入一个常数,而不是必须记住12个左右的整数键数列表。
这个想法是让他们是静态的,所以UPROPERTYs将不工作在这里(据我所知)。
到目前为止,我唯一的想法是为每个常数创建函数,我可以简单地返回问题中的数字,但这不是最漂亮的解决方案,更不用说它们还需要有某种参数,在这种情况下,这些参数只能是假的。这是丑陋的。是否有任何方法可以让我在虚幻的蓝图中暴露常量值来实现这一点?在这种情况下,它们都将是整数,但是对于其他数据类型的解决方案非常感谢。
在做了更多的挖掘之后,我发现虚幻蓝图支持枚举!
这似乎对我有效。必须通过筛选从整数转换为枚举值并不理想,但这比必须使用一系列分支语句来检查整数值要干净得多。
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")
};
相关文章:
- 编译了一个recent-C++.因此,如果没有暴露std符号,请在旧系统上运行
- 如何将不属于 QObject 的枚举暴露给 QJSEngine?
- Cython:不暴露实施的一部分
- 将ADA API暴露于C/C (可扩展方式)
- 同步线程安全的API,用于暴露缓存数据
- 与公开暴露的标头有关的C 项目结构
- 在公共标头中使用非暴露类型的风险是什么?
- VULKAN,您可以直接暴露扩展名吗?
- 避免将静态变量暴露在默认函数参数中
- 将C 对象暴露于QML并收听更改事件
- 如何以相同的名称暴露无法直接暴露的C 函数
- QT:将任何C 对象暴露于JavaScript
- 从链接列表中删除元素,采访暴露了图书漏洞
- 删除boost::python暴露的std::vector中的指针
- 在Cython中封装std::数组,并将其暴露给内存视图
- 在python中使用暴露的elbp函数后,无法显示LBP图像
- 返回一个结构而不暴露它
- 我实现的Is_complete类型特征是否暴露了编译器错误
- 如何将功能暴露给插件库
- 从DLL中的类调用方法而不暴露类