Touch ScrollWidget

Touch ToggleButton¸¦ ÀÌ¿ëÇØ ScrollView¸¦ ±¸ÇöÇÑ´Ù.
ÅÍÄ¡ ½ºÅ©¸°¿¡¼­ µ¿ÀÛÇÏ´Â ScrollView¸¦ TouchScrollWidget Ŭ·¡½º·Î ¸¸µé¾ú´Ù.

TouchToggleButton°ú TouchScrollWidget ÆÄÀÏ º¹»ç

TouchScrollWidget.h
TouchScrollWidget.cpp
TouchToggleButton.h
TouchToggleButton.cpp

ÆÄÀÏÀ» º¹»çÇÏ¸é ´ÙÀ½ÀÇ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.
error C2079: 'UTouchScrollWidget'Àº(´Â) Á¤ÀǵÇÁö ¾ÊÀº class 'UI_TEST_API'À»(¸¦) »ç¿ëÇÕ´Ï´Ù.

Çì´õ ÆÄÀÏ TouchScrollWidget.h, TouchToggleButton.h ÆÄÀÏ¿¡¼­ UI_TEST_API¸¦ UMGDEMO_API·Î º¯°æÇÑ´Ù.

ÅÍÄ¡ ¹öÆ°Àº ¾ÕÀå Touch Button (tutorial17.html)À» Âü°í ÇÑ´Ù.

À§Á¬ ºí·çÇÁ¸°Æ® ¸¸µé±â

À§Á¬ ºí·çÇÁ¸°Æ®¸¦ ÀÌ¿ëÇØ BP_ListItem, BP_ScrollBox¸¦ ¸¸µç´Ù.

BP_ListItem : ScrollBox¿¡ Ãß°¡ ÇÒ ¾ÆÀÌÅÛÀÌ´Ù. Touch ToggleButtonÀº ÇÑ°³ Æ÷ÇÔ µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.
BP_ScrollBox : ScrollBox¿Í ¹öÆ°ÀÌ µÎ°³ Ãß°¡ µÇ¾î ÀÖ´Â ¸ðÀ½ÀÌ´Ù.
BP_ScrollBox¸¦ ¸ÞÀÎ UI¿¡ ¹èÄ¡ÇÑ´Ù.

BP_ListItem¿¡¼­ ÇÑ°³ÀÇ Touch ToggleButtonÀº ²À Ãß°¡ ÇØ¾ß ÇÑ´Ù. ±×·¡¾ß TouchScrollWidget¿¡¼­ ¸Þ¼¼Áö¸¦ ó¸® ÇÒ¼ö ÀÖ´Ù.

BP_ScrollBox¿¡¼­ ScrollBoxÀÇ ½ºÅ©·Ñ¹Ù ¼û±â±â

"Scroll Bar Visibility"¸¦ Collapsed·Î ¼³Á¤ ÇÑ´Ù.
"Ç×»ó ½ºÅ©·Ñ¹Ù Æ®·¢ Ç¥½Ã"¸¦ üũ¸¦ ÇØÁ¦ ÇÑ´Ù.



C++ MyScrollWidget Ŭ·¡½º »ý¼º

¾ð¸®¾ó ¿¡µðÅÍ¿¡¼­ TouchScrollWidgetÀ» »ó¼ÓÇÑ MyScrollWidgetÀ» ¸¸µç´Ù.

BP_ScrollBoxÀÇ ºÎ¸ð Ŭ·¡½º ¼³Á¤

BP_ScrollBoxÀÇ ºÎ¸ð Ŭ·¡½º¸¦ MyScrollWidget·Î ÁöÁ¤ÇÑ´Ù.

BP_ScrollBoxÀÇ TouchScrollWidget Ä«Å×°í¸® ¼Ó¼º ÁöÁ¤

"Button Down Name" : °èÃþ±¸Á¶¿¡¼­ ´Ù¿î ¹öÆ°ÀÇ À̸§À» ÁöÁ¤
"Button Up Name" : °èÃþ±¸Á¶¿¡¼­ ¾÷ ¹öÆ°ÀÇ À̸§À» ÁöÁ¤
"Scroll Box Name" : °èÃþ±¸Á¶¿¡¼­ ScrollBoxÀÇ À̸§À» ÁöÁ¤



C++ UScrollItem Ŭ·¡½º »ý¼º

¾ð¸®¾ó ¿¡µðÅÍ¿¡¼­ UserWidgetÀ» »ó¼ÓÇؼ­ ¸¸µç´Ù.
BP_ListITem

BP_ListItemÀÇ ºÎ¸ð Ŭ·¡½º ¼³Á¤

BP_ListItemÀÇ ºÎ¸ð Ŭ·¡½º¸¦ UScrollItem·Î ÁöÁ¤ÇÑ´Ù.

MyScrollWidget Ŭ·¡½º¿¡¼­ ¾ÆÀÌÅÛ Ãß°¡

¾ÆÀÌÅÛÀ» Ãß°¡ ÇÒ¶§´Â UTouchScrollWidget::AddChild ÇÔ¼ö¸¦ ÅëÇؼ­ Ãß°¡ ÇØ¾ß ÇÑ´Ù.
Çì´õ
void AddItem(FString str);

void UMyScrollWidget::AddItem(FString str)
{
    FStringClassReference SBWidgetRef(TEXT("/Game/UI/BP_ListItem.BP_ListItem_C"));
    if (UClass* WidgetClass = SBWidgetRef.TryLoadClass<UUserWidget>())
    {
        UUserWidget* UserWidget = CreateWidget<UUserWidget>(GetWorld(), WidgetClass);
        UScrollItem* ListItem = Cast<UScrollItem>(UserWidget);
        if (ListItem)
            ListItem->SetItem(str);

        UTouchScrollWidget::AddChild(UserWidget);
    }
}

MyScrollWidget Ŭ·¡½º¿¡¼­ Ŭ¸¯ ó¸®

ClickItemÀº UTouchScrollWidgetÀ» »ó¼ÓÇÑ °¡»ó ÇÔ¼öÀÌ´Ù.
¹öÆ°ÀÌ Å¬¸¯ µÇ¸é ½ºÅ©¸° µð¹ö°Å ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÑ´Ù.
Çì´õ
virtual void ClickItem(UUserWidget* UserWidget) override;

CPP
void UMyScrollWidget::ClickItem(UUserWidget* Widget)
{
    Super::ClickItem(Widget);

    if (SelectItemPtr.IsValid())
    {
        UScrollItem* item = Cast< UScrollItem>(SelectItemPtr.Get());
        if (item)
        {
            FVector2D Scale = FVector2D(3.0f, 3.0f);
            GEngine->AddOnScreenDebugMessage(-1, 10.0f, FColor::Red, item->Data_GetText(), true, Scale);
        }
    }
}




Âü°í)
ÅÍÄ¡ ½ºÅ©¸°ÀÌ ¾øÀ»¶§´Â "¸¶¿ì½º·Î ÅÍÄ¡ »ç¿ë"À» üũ ÇÏ¸é ¸¶¿ì½º·Î Å×½ºÆ® ÇÒ¼ö ÀÖ´Ù.
ÇÁ·ÎÁ§Æ® ¼¼Æà > ÀÔ·Â > Mouse Properties > ¸¶¿ì½º·Î ÅÍÄ¡ »ç¿ë


´Ù¿î·Îµå)
MyScrollWidget.cpp
MyScrollWidget.h
ScrollItem.cpp
ScrollItem.h
TouchScrollWidget.cpp
TouchScrollWidget.h
TouchToggleButton.cpp
TouchToggleButton.h
UMGDemoScroll.zip