Make Unreal REAL.
article thumbnail
Unreal Engine: Ultimate Survival Horror Course

 

아이템 정보 구조체인 S_ItemData Structure를 생성한다.

 

 

사용자 정의 구조체를 정의한다.

 

이름

  • String은 Append, Substring 등의 연산이 가능하지만 느리다.
  • Name은 대소문자를 구분하지 않고 네트워크에 최적화되어 있으며 속도가 빠르다.
  • Text는 말그래도 텍스트를 표시하는데 사용하며 Localization을 할 때 사용한다.

메뉴 상 아이콘

  • Texture 2D (Object Reference)

최대 소지 개수

 


메뉴 상 하나의 슬롯을 의미하는 W_InventorySlot에서 어떤 아이템인지 저장하는 S_ItemData 형식의 ItemData 변수를 생성한다.

 

 

S_ItemData 구조체를 저장하는 BP_InventoryItem_Master Actor Blueprint Class를 생성한다.

  • 이름, 아이콘, 최대 소지 개수 등 실질적으로 인벤토리 아이템 1개의 정보를 저장한다.

ItemData 변수를 생성한다.

 


BP_InventoryItem_Master의 자식으로 BP_InventoryItem_FlashlightBattery를 생성한다.


ItemData의 값을 배터리에 맞게 지정해준다.

 


인벤토리 메뉴에서 어떤 아이템을 몇 개 소지하고 있는지 저장할 S_InventoryItems Structure를 생성한다.

 

아이템 정보

  • BP_InventoryItem_Master (Class Reference)

소지 개수

 


BPC_Inventory Blueprint Component를 생성한다.

 


S_InventoryItems (어떤 아이템을 몇 개 소지 중인지 저장)의 Array 형식의 InventorySlots 변수를 생성한다.

 


BeginPlay에서 HG_PlayerController에 저장된 인벤토리 슬롯의 개수를 가져와 슬롯 크기를 Resize한다.

  • RESIZE 노드를 사용하면 배열의 크기를 다시 조정할 수 있다.

 

 

빈 슬롯이 있는지 확인하여 성공 여부와 인덱스를 반환하는 CheckForEmptySlot 함수를 생성한다.

  • 인벤토리 상 아이템 정보와 소지 개수를 저장하는 S_InventoryItems 구조체의 Item이 None이면 빈 슬롯이라는 의미이다.


Return 노드를 통해 값을 반환할 수 있다.
Pure에 체크하면 실행 핀 없이 값만 반환하는 함수로 만들 수 있다.

 

Local 변수들은 현재 함수 내에서만 사용할 수 있다.

 

For Each Loop with Break 노드를 이용해 Break 가능한 Foreach 루프를 실행할 수 있다.

 

 

아이템 종류, 개수를 받아 추가 성공 여부를 반환하는 AddItem 함수를 생성한다.

  • Item: BP_InventoryItem_Master (Class Reference)

 

 

Get Class Defaults 노드로 클래스 변수에 설정된 기본값을 가져올 수 있다.

 

Set Array Item 노드로 배열 원소에 값을 설정할 수 있다.

Make ... 노드로 Break의 역연산을 할 수 있다.

 

 

L1_Character에 BPC_Inventory 컴포넌트를 추가한다.

 


월드에 배치될 아이템으로 사용할 BP_PickupActor_Master Actor Blueprint Class를 생성한다.

 

아이템 정보를 저장하는 BP_InventoryItem_Master 형식의 Item 변수와 개수를 저장하는 Amount 변수를 생성한다.

 


Sphere Collision을 추가해서 오버랩을 처리하도록 한다.

  • On Component Begin Overlap 이벤트로 오버랩 시 아이템을 획득할 수 있도록 한다.

 

Cast to ... 노드는 성공했을 경우와 실패했을 경우를 다른 실행 흐름으로 지정 가능하다.

  • 아래의 경우 L1_Character로 캐스팅이 불가능하면 아무것도 실행되지 않는다.

 

DestroyActor 노드를 이용해 액터를 삭제할 수 있다.

 

 

BP_PickupActor_Master의 자식으로 BP_PickupActor_FlashlightBattery 배터리 액터를 만든다.

 

메쉬와 머티리얼을 설정해준다.

 

 

아이템 정보 변수 Item에 BP_InventoryItem_FlashlightBattery를 지정해주고 개수 Amount를 1로 설정한다.

 

 

L1_Character에 DEBUG용 노드를 만들어 임시로 인벤토리 정보를 출력하도록 한다.

 

Get Display Name 노드를 활용해 클래스의 이름을 문자열로 가져올 수 있다.

 

Append 노드로 문자열을 붙일 수 있다.

 

Select String 노드를 활용해 조건에 따라 다른 문자열을 선택할 수 있다.

 

 

획득 가능한 아이템 제작 및 인벤토리 연동에 성공했다.

 

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그