-
블루아카이브 루트슈터 팬게임 프로젝트(9) - 인벤토리 확장루트슈터 프로젝트 2024. 1. 5. 21:22
안녕하세요. 이사가 정말 얼마 남지 않았기 때문에 방에 있는 짐들을 정리하느라 바쁘네요. 딱히 기간을 정해놓고 하는 프로젝트는 아니지만, 개발이 지체되는거 같아 마음이 조급해지는 기분입니다. 조금 더 여유를 갖고 진행해야겠네요.
그래서 오늘은 간단하게 인벤토리를 보완해봤습니다. 저번에 인벤토리를 구현할때 딱 12개의 슬롯만 넣어놨었는데요, 진짜로 인벤토리에 12칸만 달랑 있다면 정말 답답하겠죠. 그래서 이번에는 스크롤 기능을 넣어 인벤토리를 40칸으로 확장해보았습니다. 사실 루트슈터 장르를 하다보면 40칸도 그렇게 넉넉한 편이 아닌데요(디비전2에서는 100칸 정도 줬던것 같습니다.), 일단은 이정도로 넣어보고 더 필요하다 싶으면 60칸, 80칸으로 늘려볼 생각입니다.
https://youtu.be/FtD2XTK8Kg4?si=Z-l57ZviyGpTzlH2
참고한 영상은 이것입니다.
PlayerCharacter.h
UPROPERTY(EditAnywhere)FItemData itemInventory[40]; //아이템 인벤토리먼저 플레이어 캐릭터 클래스의 헤더파일로 가서 12로 있었는 인벤토리를 40으로 바꿔줍니다.
UInventory.cpp
void UUInventory::Init(){for(int i = 0; i < 40; i++) //일단은 최대 인벤토리 개수 하드코딩해놓음, 나중에 수정할 예정{if (player->itemInventory[i].itemType == EItemType::EIT_DEFAULT || NULL) {player->itemInventory[i].itemIcon = defaultTexture;}}
slots.Init(nullptr, 40);TArray<UWidget*> widgets;WidgetTree->GetAllWidgets(widgets); //위젯트리로부터 모든 widget 받아오기for(auto widget : widgets){UUISlot* slot = nullptr;slot = Cast<UUISlot>(widget);if(!slot) continue;UE_LOG(LogTemp, Error, TEXT("UISlot찾음!"));slot->player = this->player;slot->Init();slots[slot->slotNum] = slot;}}플레이어의 인벤토리를 초기화하는 Init함수에서 12로 되있던 숫자를 40으로 바꿔주기만 하면 됩니다. 코드 부분에서는 이게 끝입니다.
UInventory 블루프린트
그리고 인벤토리 블루프린트를 열어 인벤토리 부분의 균등 그리드 패널에 스크롤 박스를 래핑해줍니다. 래핑한다는 것은 하나의 위젯에 부모를 만들어 감싸준다는 것입니다. 균등 그리드 패널에 우클릭하여 다음으로 래핑..을 클릭하시고 목록중에 스크롤 박스를 클릭하시면 됩니다.
그리고 슬롯을 12개에서 40개로 늘리시면 됩니다. 귀찮은 노가다지만 생각보단 금방 끝납니다. 슬롯마다 slotNum을 바꿔주는것도 잊으시면 안됩니다.
이렇게만 하면 간단하게 인벤토리를 확장하실 수 있습니다. 인벤토리 슬롯 개수가 하드코딩돼있어서 다른곳에서 오류가 터지지 않을까 걱정했는데 다행입니다. 나중에 부족하다면 80개까지는 늘려봐야겠습니다.
이만 줄이겠습니다. 읽어주셔서 감사합니다.
'루트슈터 프로젝트' 카테고리의 다른 글
블루아카이브 루트슈터 팬게임 프로젝트(11) - 방어구 추가 (0) 2024.01.09 블루아카이브 루트슈터 팬게임 프로젝트(10) - 데미지 표시 & 코드 정비 (0) 2024.01.07 블루아카이브 루트슈터 팬게임 프로젝트(8) - 적 체력바 (1) 2024.01.04 블루아카이브 루트슈터 팬게임 프로젝트(7) - 사격 매커니즘, 반동 (1) 2024.01.03 블루아카이브 루트슈터 팬게임 프로젝트(6) - 아이템 툴팁 기능 (1) 2024.01.02