SLATE_ARGUMENT
是 Unreal Engine 中用于 Slate UI 系统的一个宏,用来在 Slate 小部件(Widgets)的构造器中定义参数。Slate 是 Unreal Engine 的低级 UI 框架,用于构建界面元素,主要用于编辑器 UI 和一些游戏内的复杂 UI。
作用
SLATE_ARGUMENT
宏的主要作用是声明一个类成员变量,并为这个变量提供一个类型和初始值的接口。
语法:
SLATE_ARGUMENT(ArgumentType, ArgumentName)
ArgumentType
:参数的类型。ArgumentName
:参数的名称。
当你使用 SLATE_ARGUMENT
宏时,它会生成一个 setter 函数,用于构造 Slate widget 时传入的参数,同时也会在 widget 类中创建一个与参数名对应的成员变量。
示例
假设我们有一个自定义的 Slate widget SMyWidget
:
class SMyWidget : public SCompoundWidget
{
SLATE_BEGIN_ARGS(SMyWidget) : _MyText(FText::FromString("Default Text")) // 参数默认值
{}
SLATE_ARGUMENT(FText, MyText) // 定义了一个 FText 类型的参数
SLATE_END_ARGS()
public: void Construct(const FArguments& InArgs)
{
// 使用传入的参数
MyText = InArgs._MyText;
}
private: FText MyText; // 这个由 SLATE_ARGUMENT 生成的成员变量
};
在这个例子中:
SLATE_ARGUMENT(FText, MyText)
定义了一个类型为FText
的参数MyText
,并在 Slate 小部件构建时可以传递。- 它还会自动生成一个与参数同名的成员变量
_MyText
,你可以在构造函数中使用。
这样,用户在使用该 widget 时,可以通过传递参数来设置文本:
SNew(SMyWidget).MyText(FText::FromString("Hello, Slate!"))
总结
SLATE_ARGUMENT
提供了一种方便的方式在构造函数中传递参数,并让小部件能够灵活地配置其属性,提升了可扩展性和可读性。