attribute7 Project_P Damage UI 개선 (오브젝트 풀 적용) 개요 기존 Damage UI 는 싱글플레이 기준으로 개발하여 멀티플레이로 프로젝트를 변경한 후클라이언트가 공격을 했는데 서버에서 Damage UI가 뜨는 문제가 있었다. 또한 데미지 이벤트가 발생할 때마다 플레이어 컨트롤러에서비용이 무거운 CreateWidget 으로 생성하고 파괴되어가비지 컬랙터의 수거대상이 되었다 위와 같은 문제를 로직 개선과 오브젝트 풀링을 적용하여 해결 하였다 기본 적인 구조는 아래와 같다서버에서 GameEffect로 데미지 적용PostGameplayEffectExecute 에서 데미지 처리 및 이벤트 발동FGameplayEffectContextHandle 을 통해 가해자(타격한 액터)에게 RPC 전송가해자 액터 클라이언트에서 Damage UI 출력Damage UI의 애니메이.. 2026. 1. 20. Project_P GE를 사용하여 데미지 전달 및 체력 감소 데미지를 전달할 GameplayEffect 생성 GameplayEffect를 블루프린트로 상속받아 블루프린트 클래스를 생성한다 현재 기능은 단순히 캐릭터의 공격력 스탯(어트리뷰트)만큼 데미지를 전달하는 기능이기 때문에Modifirers를 이용한다 좀더 복잡한 계산(방어력 등)이 필요하면 Executions을 이용하면 된다.Executions는 GameplayEffectExecutionCalculation을 상속받아 구현할 수 있다 모디파이어 설정수정할 어트리뷰트를 선택연산자를 선택 Magnitude Calculation Type에서 전달할 값을 어떤 방식으로 지정할 것인지 선택한다여기선 Attribute Based로 선택해 캐릭터의 어트리뷰트(스탯)를 가져온다Coefficient 항목에선 전달할 값을 변.. 2024. 10. 18. Project_P AttributeSet을 캐릭터에 생성하기 플레이어 캐릭터에 AttributeSet 생성플레이어 캐릭터의 경우 캐릭터에 대한 정보를 플레이어 캐릭터에 직접적으로 생성하지 않고(멀티플레이이를 고려)PlayerState 클래스에 생성한다 PlayerState 헤더파일#include "CoreMinimal.h"#include "GameFramework/PlayerState.h"#include "AbilitySystemInterface.h"#include "PPGASPlayerState.generated.h"/** * */UCLASS()class PROJECT_P_API APPGASPlayerState : public APlayerState, public IAbilitySystemInterface{ GENERATED_BODY() public: APPG.. 2024. 10. 16. Project_P AttributeSet을 사용하여 스탯 만들기 AttributeSet 생성 AttributeSet을 상속받아 PPCharacterAttributeSet을 만든다 PPCharacterAttributeSet 헤더파일#pragma once#include "CoreMinimal.h"#include "AttributeSet.h"#include "AbilitySystemComponent.h"#include "PPCharacterAttributeSet.generated.h"#define ATTRIBUTE_ACCESSORS(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_PROPERTY_GETTER(ClassName, PropertyName) \ GAMEPLAYATTRIBUTE_VALUE_GETTER(PropertyName) \ G.. 2024. 10. 16. Unreal Engine 캐릭터 어트리뷰트 설정(4) 어트리뷰트 세트 생성 보호되어 있는 글 입니다. 2024. 4. 3. Unreal Engine 캐릭터 어트리뷰트 설정(3) GAS NPC의 설정 보호되어 있는 글 입니다. 2024. 4. 2. Unreal Engine 캐릭터 어트리뷰트 설정(2) 어트리뷰트 세트(Attribute Set) 보호되어 있는 글 입니다. 2024. 4. 2. 이전 1 다음