Unreal - 인벤토리(5) ( 아이템 정보 )

2025. 11. 28. 04:50·Unreal 프로젝트 다이어리/두번째 프로젝트

이전 글에서 이어집니다

2025.11.26 - [Unreal 프로젝트 다이어리/두번째 프로젝트] - Unreal - 인벤토리(4) ( 정렬, 삭제 )

 

Unreal - 인벤토리(4) ( 정렬, 삭제 )

이전 글에서 이어집니다2025.11.25 - [Unreal 프로젝트 다이어리/두번째 프로젝트] - Unreal - 인벤토리 (드래그 앤 드롭) Unreal - 인벤토리 (드래그 앤 드롭)이전 글에서 이어집니다2025.11.23 - [Unreal 프로젝

lucodev.tistory.com

 

구현한 내용

  • 아이템에 마우스 올리면 해당 아이템의 정보 확인하기

 

먼저 초기 구상도를 만들어주었습니다

 

이를 토대로 위젯을 만들어주었습니다

 

추가한 클래스

ToolTipWidget 마우스를 올리면 툴팁이 표시되는 위젯

 

구현

위젯에서 텍스트와 이미지를 바인드한뒤 data를 기반으로 텍스트 혹은 이미지를 변경해주는 함수를 만들어주었습니다

void UToolTipWidget::SetItemInformation(const FItemData& itemData)
{
    if (TextBlock_ItemName)
        TextBlock_ItemName->SetText(FText::FromString(itemData.itemName));

    if (TextBlock_ItemDescription)
        TextBlock_ItemDescription->SetText(FText::FromString(itemData.itemDescription));

    if (TextBlock_ItemType)
    {
        FString itemTypeStr;
        switch (itemData.itemType)
        {
        case EItemType::Consumable:     itemTypeStr = TEXT("Consumable"); break;
        case EItemType::Money:          itemTypeStr = TEXT("Money"); break;
        case EItemType::Quest:          itemTypeStr = TEXT("Quest"); break;
        case EItemType::Upgrade:        itemTypeStr = TEXT("Upgrade"); break;
        default:                        itemTypeStr = TEXT("Unknown"); break;
        }
        TextBlock_ItemType->SetText(FText::FromString(itemTypeStr));
    }

    if (Image_ItemImage && itemData.itemIcon)
        Image_ItemImage->SetBrushFromTexture(itemData.itemIcon);
}

 

인벤토리 컴포넌트에서 아이템 데이터를 캐싱해줍니다

TMap<int32, FItemData*> itemDataCache;

void InitItemDataCache();

void UInventoryComponent::InitItemDataCache()
{
	itemDataCache.Empty();
	for (auto& pairs : itemDataMap)
		itemDataCache.Add(pairs.Key, &pairs.Value);
}

 

마우스를 가져다 대거나 마우스를 뗏을때 실행되는 함수를 오버라이드 해줍니다

virtual void NativeOnMouseEnter(const FGeometry& inGeometry, const FPointerEvent& inMouseEvent) override;
virtual void NativeOnMouseLeave(const FPointerEvent& inMouseEvent) override;

 

슬롯위젯에서 캐싱한 데이터를 툴팁위젯에 띄웁니다

void USlotWidget::NativeOnMouseEnter(const FGeometry& inGeometry, const FPointerEvent& inMouseEvent)
{
	if (currentSlotData.isEmpty())
		return;
	FVector2D MouseScreenPos = inMouseEvent.GetScreenSpacePosition();
	FItemData* foundData = inventoryComp->itemDataCache.FindRef(currentSlotData.itemID);
	if (!foundData)
		return;
	mainCon->toolTipWidget->SetItemInformation(*foundData);

	APlayerController* pc = GetOwningPlayer();
	FVector2D mousePos = UWidgetLayoutLibrary::GetMousePositionOnViewport(pc);

	mainCon->toolTipWidget->SetPositionInViewport(mousePos, false);
	mainCon->toolTipWidget->SetVisibility(ESlateVisibility::SelfHitTestInvisible);
}

void USlotWidget::NativeOnMouseLeave(const FPointerEvent& inMouseEvent)
{
	if (mainCon && mainCon->toolTipWidget)
		mainCon->toolTipWidget->SetVisibility(ESlateVisibility::Collapsed);
}

 

사용할 데이터를 완성해주었습니다

 

결과

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'Unreal 프로젝트 다이어리 > 두번째 프로젝트' 카테고리의 다른 글

Unreal - 데미지 오버레이  (0) 2025.12.01
Unreal - 인벤토리(5-2) (UI 디테일 추가)  (0) 2025.11.29
Unreal - 인벤토리(4) ( 정렬, 삭제 )  (0) 2025.11.26
Unreal - 인벤토리(3) (드래그 앤 드롭)  (0) 2025.11.25
Unreal - 인벤토리(2) ( 아이템 추가하기 )  (0) 2025.11.23
'Unreal 프로젝트 다이어리/두번째 프로젝트' 카테고리의 다른 글
  • Unreal - 데미지 오버레이
  • Unreal - 인벤토리(5-2) (UI 디테일 추가)
  • Unreal - 인벤토리(4) ( 정렬, 삭제 )
  • Unreal - 인벤토리(3) (드래그 앤 드롭)
lucodev
lucodev
커피와 노트북 그리고 개발
  • lucodev
    루코 개발테이블
    lucodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (211) N
      • Unreal 프로젝트 다이어리 (108) N
        • 첫번째 프로젝트 (73)
        • 두번째 프로젝트 (35) N
      • Unreal 팁 (8)
      • Unreal 디버깅 (8)
      • C++ 프로그래머스 (52)
        • Stack,Queue (7)
        • Hash (4)
        • Heap (2)
        • Sort (5)
        • Exhaustive search (5)
        • Greedy (2)
        • BFS , DFS (7)
        • Graph (2)
        • Dynamic Programming (1)
        • C++ Math (2)
        • 기타 문제 (14)
      • C++ 백준 (4)
      • C++ 팁 (1)
      • 개인 코테 & 스타디 <비공개> (29)
        • 코드 개인보관함 (9)
        • 코딩테스트+@ (11)
        • 알고리즘 스타디 (6)
        • 알고리즘 스타디 과제 (3)
        • 비공개 (0)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

  • 공지사항

  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 태그

    언리얼 상호작용
    언리얼 시퀀스
    Unreal Parkour
    언리얼 motionmatching
    언리얼 파쿠르
    언리얼 프로그래스바
    언리얼 인벤토리
    unreal 시퀀스
    unreal 인벤토리
    unreal 파쿠르
    언리얼
    unreal 모션매칭
    언리얼 컷씬
    언리얼 모션매칭
    언리얼 parkour
    언리얼 ui
    언리얼 behaviortree
    unreal inventory
    언리얼 behavior tree
    언리얼 비헤이비어트리
  • hELLO· Designed By정상우.v4.10.3
lucodev
Unreal - 인벤토리(5) ( 아이템 정보 )
상단으로

티스토리툴바