Programming/Unreal
블루프린트에서 만든 변수 가져오기
사기꾼프로드
2017. 11. 25. 19:03
C++ 위주로 만든다 하더라도 블루프린트가 가지고있는 장점이 있기 때문에 들어가야 할 경우가 있다
더군다나 다른 파트사람이 블루프린트 상에서 만든 변수가 있을 경우 C++에서 새로만들거나 블루프린트 코드를 고쳐서
사용해야 하는데( 예. 디자이너가 작업한 UI애니메이션 )
아래의 코드는 블루프린트에서 만들어진 변수를 C++에서 가져오는 방법 중 하나이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // 블루프린트 변수 가져오기 void GetBluePrintVariable(FString VariableName) { // 변수의 이름으로 검색하여 UProperty 를 가져온다. UProperty* Prop = GetClass()->FindPropertyByName(*VariableName); // 현재 클래스의 변수가 맞는지 비교 if (Prop->GetClass() == UObjectProperty::StaticClass()) { UObjectProperty* objectProp = Cast<UObjectProperty>(Prop); // if (objectProp->PropertyClass == 원하는변수의 클래스형태::StaticClass()) // 예제 시작 if (objectProp->PropertyClass == UWidgetAnimation::StaticClass()) { UObject* obj = objectProp->GetObjectPropertyValue_InContainer(this); UWidgetAnimation* WidgetAnim = Cast<UWidgetAnimation>(obj); if (IsValid(WidgetAnim)) { // 예제 끝 } } } } | cs |
블루프린트 변수들은 UProperty 를 상속받고 있으며 해당 클래스로 가져온 뒤 Cast를 통해 원하는 형으로 변환 후
GetObjectPropertyValue_InContainer()를 통하여 원하는 변수 형태로 변환한다.
아래의 언리얼 사이트 링크로 들어가면 UProperty를 상속받는 변수 형태 클래스들이 있다.
참고하여 변형을 하면 블루프린트 변수들을 가져올 수 있다.
https://docs.unrealengine.com/latest/INT/API/Runtime/CoreUObject/UObject/TProperty/index.html