星鸿阁

 找回密码
 立即注册
搜索
热搜: 活动 交友 动画
查看: 1650|回复: 0

获取蓝图结构体的最有效方法

[复制链接]

2254

主题

2764

帖子

9644

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9644
发表于 2022-1-31 13:33:40 | 显示全部楼层 |阅读模式
  1. float GetSetVectorX(UObject* ObjectWithVector,FName structname,FName prosFullName  )
  2. {
  3.     FName PropName = structname;//FName("myyy");
  4.     FName VectorMemberName = prosFullName;//FName("aa_4_0592FEC04A8D2B9F467AD3B98BECBF83");
  5. //   float NewValue = 42.0;

  6.     // Get property representing struct
  7.     UProperty* Prop = ObjectWithVector->GetClass()->FindPropertyByName(PropName);

  8.     // Ensure ObjectWithVector actually has a myVector member
  9.     if (Prop)
  10.     {

  11.         // Get struct address
  12.         void* StructAddress = Prop->ContainerPtrToValuePtr<void>(ObjectWithVector);
  13.      
  14.         // Ensure MyVector really is a vector
  15.         if (UStructProperty* StructProp = Cast<UStructProperty>(Prop))
  16.         {
  17.             UE_LOG(LogTemp, Warning, TEXT("struct is %s"), *StructProp->GetName());
  18.             // We'll get struct properties through a UScriptStruct, not a UObject
  19.             // ScriptStructs are just templates and don't hold any of your data
  20.             UScriptStruct* ScriptStruct = StructProp->Struct;

  21.             // Get the vector's "X" property
  22.             UProperty* ChildProp = ScriptStruct->FindPropertyByName(VectorMemberName);

  23.             // Cast to FloatProperty
  24.             if (UFloatProperty* ChildFloatProp = Cast<UFloatProperty>(ChildProp))
  25.             {

  26.                 // Get
  27.              //   float OldValue = ChildFloatProp->GetFloatingPointPropertyValue(StructAddress);
  28.                 float OldValue = ChildFloatProp->GetPropertyValue_InContainer(StructAddress);

  29.                 // Set
  30.            //设置变量参数     ChildFloatProp->SetFloatingPointPropertyValue(StructAddress, NewValue);

  31.                 return OldValue;
  32.             }
  33.         }
  34.     }
  35.     return 0.13141516;
  36. }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|starfluidga

GMT+8, 2025-5-8 05:06 , Processed in 0.012468 second(s), 20 queries .

Made by Liga 星鸿阁

Copyright © 2020-2048, LigaStudio.

快速回复 返回顶部 返回列表