1.8 KiB
1.8 KiB
CustomWidget
- 功能描述: 指定该FRigUnit里的属性要用自定义的控件来编辑。
- 使用位置: UPROPERTY
- 引擎模块: RigVMStruct
- 元数据类型: string="abc"
- 限制类型: FRigUnit中的属性
- 常用程度: ★★
指定该FRigUnit里的属性要用自定义的控件来编辑。
CustomWidget的值是在一些选项中选择的,这些自定义控件是已经在引擎中实现的。
可用的列表为:BoneName,ControlName,SpaceName/NullName,CurveName,ElementName,ConnectorName,DrawingName,ShapeName,AnimationChannelName,MetadataName,MetadataTagName。
测试代码里就只用BoneName作为测试展示:
USTRUCT(meta = (DisplayName = "MyRigCustomWidget"))
struct INSIDER_API FRigUnit_MyRigCustomWidget : public FRigUnit
{
GENERATED_BODY()
RIGVM_METHOD()
virtual void Execute() override;
public:
UPROPERTY(meta = (Input))
FString MyString;
UPROPERTY(meta = (Input, CustomWidget = "BoneName"))
FString MyString_Custom;
UPROPERTY(meta = (Output))
float MyFloat_Output = 123.f;
};
测试效果:
可见MyString_Custom的Pin类型变成可选BoneName的列表。
原理:
TSharedPtr<SGraphPin> FControlRigGraphPanelPinFactory::CreatePin_Internal(UEdGraphPin* InPin) const
{
if (CustomWidgetName == TEXT("BoneName"))
{
return SNew(SRigVMGraphPinNameList, InPin)
.ModelPin(ModelPin)
.OnGetNameFromSelection_UObject(RigGraph, &UControlRigGraph::GetSelectedElementsNameList)
.OnGetNameListContent_UObject(RigGraph, &UControlRigGraph::GetBoneNameList)
.OnGetSelectedClicked_UObject(RigGraph, &UControlRigGraph::HandleGetSelectedClicked)
.OnBrowseClicked_UObject(RigGraph, &UControlRigGraph::HandleBrowseClicked);
}
//等等其他
}