본문 바로가기

Programming/Unreal

블루프린트에서 만든 변수 가져오기

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