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
'Programming > Unreal' 카테고리의 다른 글
UI Animation 자동화 (1) | 2019.10.28 |
---|---|
언리얼 커스텀 플립북 매터리얼 (unreal custom flipbook material) (0) | 2017.12.20 |
InstancedStaticMeshComponent Atlas Texture 사용하도록 Engine 코드변경하기 (0) | 2017.11.19 |
언리얼 빌드에러 error : One or more of the modules specified using the '-module' argument could not be found (0) | 2017.11.08 |
APK빌드는 잘 되었는데 DLC빌드가 안될 경우 (0) | 2017.11.07 |