EquipmentInstance
장착한 무기에 따라 애니메이션의 변경을 적용
AnimLayerSelectionSet
AnimBodyStyleSelectionSet과 마찬가지로 태그에 맞춰 AnimBodyStyleSelectionEntry를 가져옴
AnimBodyStyleSelectionEntry는 AnimInstance와 Tag로 이루어져 있다.
그래서 태그에 맞는 애니메이션을 선택한다.
EquipmentInstance->WeaponInstance->RangedWeaponInstance(상속관계)
WeaponInstance에서 AnimLayerSelectionSet 타입의 EquippedAnimSet과 UnEquippedAnimSet을 가지고
무장과 비무장 간 애니메이션을 선택한다.
InventoryItemFragment
아이템에게 붙이는 컴포넌트 같은 것이다. 아이템의 특정 fragment를 붙여 속성을 추가하는 것이라고 볼 수 있다.
클래스 지정자로 DefaultToInstanced, EditInlineNew를 붙여줘야 한다. ItemFragment는 지금까지와 달리 인스턴스가 구현되어있지 않고 두 지정자를 쓰면 에디터 상에서 추가하는 것만으로 인스턴스가 만들어지기 때문이다.
ItemDefinition
DisplayName과 Fragment들을 배열로 가진다.
InventoryItemInstance
메타데이터인 ItemDefinition을 들고 있다.
InventoryManagerComponent - PlayerController의 Component로 붙임
>InventoryList>InventoryEntry>InventoryItemInstance 순으로 포함관계이다.
EquipmentDefinition
EquipmentInstance를 가지는데 다른 Instance클래스들과 달리 인스턴스가 아니라 관리하는 방식을 의미한다.
EquipmentActorToSpawn은 스폰할 액터의 메타 데이터, 소켓 , 트랜스폼을 가진다. (무기 위치 조정)
EquipmentInstance
어떤 InventoryItemInstance에 의해 활성되었는지 Instigator와 Spawn된 Actor Instance들을 들고 있다.
EquipmentManagerComponent
>EquipmentList>AppliedEquipmentEntry>EquipmentDefinition>EquipmentInstance
QuickBarComponent
게임에서 장착한 무기를 나타내는 슬롯과 같은 역할
Inventory와 Equipment의 중간다리 역할
InventoryItemInstance는 보유한 아이템들 EquipmentoryItemInstance는 장착한 아이템 캐싱
Async_ExperienceReady
Item을 장착할 때 애니메이션 레이어가 결정되기 때문에 그 전에 Mesh를 장착해야 한다.
아이템 장착은 Possess때 하는데 그 때 Mesh가 장착되기 전이므로 Wait For Experience Ready 함수를
이용해 Mesh 장착을 기다린다. Async_ExperienceReady[심화 강의] 참조
장착 로직
플레이어 블루프린트에서 Add Initial Inventory함수에서 InventoryManager의 Add Item Definition을 한다. 이 때 InventoryList에 AddEntry하는데 ItemDefinition을 ItemInstance로 저장한다. (Instance가 Fragment 를 가져올 수 있어서)
그리고 QuickBarComponent의 AddItemToSlot 하는데 슬롯에 InventoryItemInstance를 저장한다. 장착을 완료하기 위해
슬롯을 활성화해야 한다. SetActiveSlotIndex에서 UnequipItemInSlot하고 NewIndex로 ActiveSlotIndex를 설정한 후
다시 EquipItemInSlot로 장착 및 업데이트를 진행한다.
EquipItemInSlot
슬롯의 InventoryItemInstance에서 FindFragmentByClass로 Fragment_EquippableItem->EquipmentDefinition을 가져온다. 가져온 Definition을 Manager에서 장착하면 Inventory처럼 EquipmentList의 AddEntry하는데 EquipmentInstance를
AppliedEquipmentEntry에 저장한다. 마지막으로 인 EquipmentInstance에서 액터를 스폰한다.
애니메이션 적용
EquipmentInstance에서 장착되었을 때 On Equipped 블루프린트 함수를 실행한다. 애니메이션 적용 로직은 블루프린트에서 진행한다. EquipmentInstance(WeaponInstance)에서 PickBestLayer로 태그에 맞는 AnimInstance를 선택하고
Link Anim Class Layer로 애니메이션을 변경한다.
'Unreal' 카테고리의 다른 글
| [Unreal] Lyra 프로젝트 분석 - 10. GamePlayCue (0) | 2025.02.09 |
|---|---|
| [Unreal] Lyra 프로젝트 분석 - 09. Ability System (0) | 2025.02.09 |
| [Unreal] Lyra 프로젝트 분석 - 07. Cosmetic (0) | 2025.02.08 |
| [Unreal] Lyra 프로젝트 분석 - 06. Game Feature (0) | 2025.02.08 |
| [Unreal] Lyra 프로젝트 분석 - 05. Input (0) | 2025.02.07 |