UE5 - 어빌리티 생성 및 입력 매핑

haura·2025년 5월 26일
0

UE5

목록 보기
19/21

🏷️ Gameplay Tags

태그 종류설명
Ability Tags어빌리티가 가지고 있는 태그
Cancel Abilities with Tag실행 시 해당 태그의 능력을 취소
Block Abilities with Tag실행 중, 해당 태그의 능력 차단
Activation Required Tags해당 태그가 있을 때만 발동 가능
Activation Blocked Tags해당 태그가 있으면 발동 불가
Source/Target Required/Blocked Tags발동 주체(Source) 또는 대상(Target)에 조건 부여
Activation Owned Tags어빌리티가 활성화된 동안 소유자에게 부여되는 태그

Instancing & Network 설정 정리

Instancing Policy

옵션설명
Instanced Per Actor한 번 생성되어 재사용 (상태 저장 가능)
Instanced Per Execution매번 새 인스턴스 생성 (상태 초기화됨)
Non-Instanced인스턴스 없이 동작 (퍼포먼스 최고, 상태 저장 불가)

Net Execution Policy

옵션설명
Local Only클라이언트에서만 실행
Local Predicted클라이언트 + 서버 예측 실행 (권장)
Server Only서버 전용 (패시브 등)
Server Initiated서버 → 클라이언트로 복제 실행

✅ 대부분의 액티브 어빌리티는 Local Predicted가 적합

❌ 피해야 할 설정

설정이유
Replicate Input Directly매 프레임 RPC 전송 가능 → 성능 악화
Replication Policy어빌리티는 기본 복제됨. 건드릴 필요 없음
Server Respects Remote Cancellation클라이언트가 서버 어빌리티를 취소할 수 있음 → 권장되지 않음

Input Action을 구조체로 만드는 이유

USTRUCT(BlueprintType)
struct FAuraInputAction
{
	GENERATED_BODY()

	UPROPERTY(EditDefaultsOnly)
	const class UInputAction* InputAction = nullptr;

	const FGameplayTag InputTag = FGameplayTag();
};

- 입력(Input)과 태그(Tag)를 함께 묶기 위해
- 입력 이벤트를 직접 사용하지 않고 GameplayTag 기반으로 어빌리티 발동
- InputAction과 FGameplayTag를 쌍(Pair) 으로 관리하는 것이 가장 유연함
이 구조를 통해 명확하게 연결 가능
ex) 공격 버튼이 눌리면 Input.Attack 태그 발동

- 확장성과 일관성
- 구조체로 만들어두면 구조 확장이 쉽고 코드가 깔끔하고 명확해진다

- 타 시스템과 연결이 쉬움

0개의 댓글