64 lines
1.7 KiB
Markdown
Raw Normal View History

2024-10-12 17:19:46 +08:00
# Icon
- **功能描述:** 设定FRigUnit蓝图节点的图标。
- **使用位置:** USTRUCT
- **引擎模块:** RigVMStruct
- **元数据类型:** string="abc"
- **限制类型:** FRigUnit
- **常用程度:** ★★
设定FRigUnit蓝图节点的图标。
根据源码中的注释得知Icon的格式是“StyleSetName|StyleName|SmallStyleName|StatusOverlayStyleName”最后两项是可选的可参考FSlateIcon的更多介绍。
## 测试代码:
```cpp
USTRUCT(meta = (DisplayName = "MyRigIcon",Icon="EditorStyle|GraphEditor.Macro.ForEach_16x"))
struct INSIDER_API FRigUnit_MyRigIcon: public FRigUnit
{
GENERATED_BODY()
RIGVM_METHOD()
virtual void Execute() override;
public:
UPROPERTY(meta = (Input))
float MyFloat_Input = 123.f;
UPROPERTY(meta = (Output))
float MyFloat_Output = 123.f;
};
```
## 测试效果:
可见加了Icon之后左上角图标变成了其他不是默认的f函数目标。
![Untitled](Untitled.png)
## 原理:
```cpp
FSlateIcon URigVMEdGraphNode::GetIconAndTint(FLinearColor& OutColor) const
{
if(MetadataScriptStruct && MetadataScriptStruct->HasMetaDataHierarchical(FRigVMStruct::IconMetaName))
{
FString IconPath;
const int32 NumOfIconPathNames = 4;
FName IconPathNames[NumOfIconPathNames] = {
NAME_None, // StyleSetName
NAME_None, // StyleName
NAME_None, // SmallStyleName
NAME_None // StatusOverlayStyleName
};
// icon path format: StyleSetName|StyleName|SmallStyleName|StatusOverlayStyleName
// the last two names are optional, see FSlateIcon() for reference
MetadataScriptStruct->GetStringMetaDataHierarchical(FRigVMStruct::IconMetaName, &IconPath);
return FSlateIcon(IconPathNames[0], IconPathNames[1], IconPathNames[2], IconPathNames[3]);
}
}
```