无意发现了这个东西,能够根据属性的名称进行查找并修改,允许通过c++直接查找并修改蓝图中声明的变量(或被UPROPERTY标记的c++变量)
auto IntProp = FindFProperty<FIntProperty>(target,FName(TEXT("A")));//更改int类型
if (IntProp)
{
IntProp->SetPropertyValue_InContainer(TargetActor, 7891);
}
auto BoolProp = FindFProperty<FBoolProperty>(target,FName(TEXT("B")));//更改bool类型
if (BoolProp)
{
BoolProp->SetPropertyValue_InContainer(TargetActor, true);
}
auto StringProp = FindFProperty<FStrProperty>(target,FName(TEXT("C")));//更改string类型
if (StringProp)
{
StringProp->SetPropertyValue_InContainer(TargetActor, TEXT("abc"));
}
测试:
bool AMyActor::SetString(AActor*target,FName name,FString str)
{
auto StringProp = FindFProperty<FStrProperty>(target->GetClass(),name);//更改string类型
if (StringProp)
{
StringProp->SetPropertyValue_InContainer(target, str);
return true;
}
return false;
}