UMG로 나와있는 Textblock 기능이 한정되어 있어서 Slate의 STextblock 기능을 쓰고 싶을 때, 기타 등등..
새 C++ 클래스 추가 후
모든 클래스 표시 체크
Textblock을 고치고 싶어서 Textblock을 부모로 선택
MyuserWidget.h
#pragma once #include "Runtime/UMG/Public/UMG.h" #include "Blueprint/UserWidget.h" #include "MyUserWidget.generated.h" /** * */ UCLASS(meta=(DisplayName="Text Custom")) class DELEGATETEST_API UMyUserWidget : public UTextBlock { GENERATED_BODY() #if WITH_EDITOR virtual const FText GetPaletteCategory() override; #endif public: protected: //~ Begin UWidget Interface virtual TSharedRefRebuildWidget() override; };
MyUserWidget.cpp
#include "MyUserWidget.h" #include "BreakIterator.h" #include "SInvalidationPanel.h" #define LOCTEXT_NAMESPACE "UMG" ///////////////////////////////////////////////////// // UMyUserWidget #if WITH_EDITOR const FText UMyUserWidget::GetPaletteCategory() { return LOCTEXT("", "My user widget stuff"); } #endif TSharedRefUMyUserWidget::RebuildWidget() { UE_LOG(LogTemp, Warning, TEXT( " UTextBlock::RebuildWidget() Called!!!!!!!!!!!!!!!!!!!!!!!!!!#####################")); if (bWrapWithInvalidationPanel && !IsDesignTime()) { TSharedPtr RetWidget = SNew(SInvalidationPanel) [ SAssignNew(MyTextBlock, STextBlock) ]; return RetWidget.ToSharedRef(); } else { MyTextBlock = SNew(STextBlock).LineBreakPolicy(FBreakIterator::CreateCharacterBoundaryIterator()); return MyTextBlock.ToSharedRef(); } } #undef LOCTEXT_NAMESPACE
언리얼 엔진소스 TSharedRef<SWidget> UTextBlock::RebuildWidget() 에는
MyTextBlock = SNew(STextBlock);
만 되어 있었기 때문에
LineBreakPolicy 가 기본 값인 WordBreakIterator 였다. UTextblock 클래스에는 변수로 나와있지 않기 때문에 수정이 불가능 했던 것.
에디터에 추가해서 Auto Wrap 옵션을 주고 확인해보았다 .
위쪽이 원래의 UMG Textblock
아래쪽이 새로추가한 UMG Textblock Custom
같은 문자열을 입력했는데 위는 wordbreak 가 아래에는 characterbreak 가 적용 된 모습.
알아내느라 대략 24시간 정도 쓴 것 같다....
핵심은
언리얼 엔진소스의 UMG 위젯 중 하나를 상속받아서
필요한 부분만 override
여기서는 RebuildWidget() 수정.
'컴퓨터공학 > 언리얼엔진' 카테고리의 다른 글
언리얼 엔진 빌드 CPU 스레드 차이 i5 vs i7 (0) | 2018.06.15 |
---|---|
프로젝트 셋팅 iOS Mobile Provision 에서 인증서, 프로비저닝 목록이 안뜨는 경우 (0) | 2016.10.26 |
맥 Xcode에서 Indexing 끄기.. (0) | 2016.09.27 |
4.13 Unreal Plugin Langauge로 기존 APL을 대체 (0) | 2016.08.19 |
FString (Hex String) to TArray<uint8> (byteArray) (0) | 2016.07.19 |
Unreal Engine 4.11 안드로이드 라이브러리 적용 APL 사용 (0) | 2016.05.30 |
Unreal Engine 4.11 안드로이드 라이브러리 적용 (0) | 2016.05.30 |