UnrealC++에서 클래스의 기본 객체 얻기

소개





Blueprint는 클래스의 기본값을 가져옵니다.
이번에는 이것을 UnrealC++로 하는 방법을 소개하고 싶습니다.

무엇을 할 수 있는가?



UnrealC++로 디폴트 오브젝트를 취득하면 구체적으로 어떤 일을 할 수 있는가입니다만, 이하와 같습니다.
  • GetClassDefaults 노드와 마찬가지로 클래스의 기본값을 얻을 수 있습니다.
  • BP에 공개되지 않은 Public 변수의 디폴트치를 취득할 수 있다
  • 클래스의 정적이지 않은 함수를 호출 할 수 있습니다.

    구체적인 사용예로서는 RichText의 RichTextBlockImageDecorator 와 같은 클래스의 디폴트치를 사용하는 목적의 클래스를 취급할 때에 편리합니다.

    소스 코드



    Actor 클래스의 HiddenInGame의 디폴트치를 취득



    Sample.cpp
    bool SampleFunction(const TSubclassOf<AActor>& InClass)
    {
        UClass* Class = InClass.Get();
        if (Class)
        {
            AActor* DefaultObject = Cast<AActor>(Class->GetDefaultObject());
            if (DefaultObject)
            {
                return DefaultObject->bHidden;
            }
        }
        return false;
    }
    

    RichTextBlockImageDecorator 클래스에서 Brush를 가져옵니다.



    Sample.cpp
    bool URichTextFunctionLibrary::GetBrushFromImageDecoratorClass(const TSubclassOf<URichTextBlockImageDecorator>& InClass, FName TableID, FSlateBrush& Brush)
    {
        UClass* Class = InClass.Get();
        if (Class)
        {
            URichTextBlockImageDecorator* DefaultObject = Cast<URichTextBlockImageDecorator>(Class->GetDefaultObject());
            if (DefaultObject)
            {
                const FSlateBrush* BrushPtr = DefaultObject->FindImageBrush(TableID, false);
                if (BrushPtr)
                {
                    Brush = *BrushPtr;
    
                    return true;
                }
            }
        }
    
        return false;
    }
    

    결론



    좀처럼 사소한 케이스일지도 모르지만, 이쪽의 기사가 도움이 되면 다행입니다.
  • 좋은 웹페이지 즐겨찾기