Unreal (17) 썸네일형 리스트형 [Unreal] Lyra 프로젝트 분석 - 13. GameplayTagStack GameplayTagStack게임플레이 태그와 카운트로 이루어져 있다.스탯, 수량 등 여러가지 활용 가능 AddStack으로 Tag에 Count를 특정 값만큼 추가GamePlayTagStackContainer은 InventoryItemInstance에서 들고 있다. InventoryFragment_SetStatsInventoryList::AddEntry에서 InventoryItemInstance를 만들 때 인스턴스의 Fragment들에 대하여 OnInstanceCreated를 실행한다. ItemDefinition은 정의고, 그것을 이용해서 만든 Instance로 각종 세팅이 가능하다.OnInstanceCreated에서 StatTagStack을 추가한다. (Map) AbilityCost클래스 지정자.. [Unreal] Lyra 프로젝트 분석 - 12. GameplayEffect AttributeSet직업을 추가할 때마다 클래스를 추가해야 하는데 Attribute를 사용하면 직업 구분 필요 없이그때그때 필요한 속성들을 추가해서 직업처럼 구성할 수 있다. ATTRIBUTE_ACCESSORS 매크로로 Get, Set, 초기화가 자동 정의된다.AbilitySystemComponent가 생성된 곳에 같이 생성해야 함 PreAttributeBaseChangeAttributeSet에서 값을 변경하기 전에 Clamp를 해서 값의 범위를 제한한다. PreGameplayEffectExecute, PostGameplayEffectExecute로 게임플레이이펙트 실행 전 후 코드를 작성한다.PostGameplayEffectExecute에서 힐링을 받으면 체력에 힐링값을 추가한다. Gamepla.. [Unreal] Lyra 프로젝트 분석 - 11. Common UI Common UIUMG를 래핑한 UI 플러그인 UIManagerSubSystemGameUIPolicy를 설정한다. GameUIPolicy PrimaryGameLayout - 로컬플레이어에 바인딩하는 UI의 LayoutRootViewportLayoutInfo - 로컬플레이어와 PrimaryGameLayout 매핑 CommonGameInstance::AddLocalPlayer에서 로컬플레이어 추가할 때 UIManagerSubsystem->NotifyPlayerAdded()호출로 GameLayOut을 추가한다. UIManagerSubsystem->NotifyPlayerAdded()은 UIGamePolicy->NotifyPlayerAdded()를 실행하고레이아웃을 추가한다. 그리고 OnPlayerControl.. [Unreal] Lyra 프로젝트 분석 - 10. GamePlayCue GamePlayCue능력을 사용했을 때 나타나는 이펙트 (연기, 출혈, 파편 등)GamePlayCueManager에서 게임플레이태그로 GamePlayCueNotify를 실행한다.그러기 위해서 에셋처럼 GamePlayCueNotify(이하 GCN)를 스캔해야 한다. GameFeatureAction_AddGameplayCuePathDirectory의 GCN을 스캔한다.IGameFeatureStateChangeObserver을 상속옵저버는 Path를 등록해놓고 GameFeature가 등록되거나 해제될 때마다 알려줌GameplayFeaturePolicyGameFeatureAction_AddGameplayCuePath를 Observer에 등록한다 OnGameFeatureRegisteringGameFeatureDa.. [Unreal] Lyra 프로젝트 분석 - 09. Ability System AbilitySystemComponent - PlayerState에 연결InitAbilityActorInfo Owner(PlayerState), Avatar(능력을 사용하는 주체 - 폰) 설정PlayerState::PostInitializeComponents 시점에서는 폰이 아직 Possess되지 않았기 때문에 Avatar은 nullptr HeroComponent에서 PawnExtComp->InitializeAbilitySystem폰이 Possess되어 준비된 상태로 InitAbilityActorInfo 다시 실행해 Avatar 재설정 AbilitySetGameplayAbility와 태그를 들고 있다.PawnData에서 AbilitySet을 들고 있고 PlayerState에서 들고 있는 PawnDat.. [Unreal] Lyra 프로젝트 분석 - 08. Weapon System EquipmentInstance장착한 무기에 따라 애니메이션의 변경을 적용 AnimLayerSelectionSetAnimBodyStyleSelectionSet과 마찬가지로 태그에 맞춰 AnimBodyStyleSelectionEntry를 가져옴AnimBodyStyleSelectionEntry는 AnimInstance와 Tag로 이루어져 있다. 그래서 태그에 맞는 애니메이션을 선택한다. EquipmentInstance->WeaponInstance->RangedWeaponInstance(상속관계)WeaponInstance에서 AnimLayerSelectionSet 타입의 EquippedAnimSet과 UnEquippedAnimSet을 가지고무장과 비무장 간 애니메이션을 선택한다. InventoryItem.. [Unreal] Lyra 프로젝트 분석 - 07. Cosmetic Modular Gameplay ActorsAddComponent가 가능한 대상은 GameFrameworkComponentManager에 등록되어있어야 한다.Character,PlayerController 대신 ModularCharacter, ModularPlayerController을 상속받으면 자동으로 등록된다. Cosmetic플레이어에 붙이는 Mesh또한 컴포넌트화해서 붙였다 뗐다 할 수 있다. ControllerComponent_CharacterParts어떤 캐릭터 모양을 쓸지 여러개를 들고 있음 메타데이터만 들고 있음 ControllerCharacterPartEntryCharacterPart - CharacterPart에 대한 정의를 메타데이터로 가짐액터의 TSubClassOf 클래스(메타데이.. [Unreal] Lyra 프로젝트 분석 - 06. Game Feature Common User맵을 로딩하기 위한 플러그인 CommonSession_HostSessionRequestCommonSessionSubSystem에 전달하는 객체MapID(맵경로)와 CmdArgs(Experience 이름)을 갖는다.CreateHostingRequest함수로 생성하고 바로 계속 사용하려면 바로 저장해야 dangling나지 않는다. CommonSessionSubsystem::HostSessionGetWorld()->ServerTravel에서 MapID와 ExtraArgs를 이용해서 MapLoad를 시작한다.GameModeBase에서 ExtraArgs를 받아 Parse해서 Experience의 이름을 저장한다. Game Feature런타임중에 Action에 해당하는 기능들을 끄고 켤 .. 이전 1 2 3 다음