728x90
728x90
Unreal Engine에서 제공하는 Lyra 샘플 프로젝트에서는 기존의 방식보다 개선된 캐릭터 조작 시스템을 사용합니다.
1. 전통적인 입력 바인딩 방식
전통적인 방식에서는 다음과 같은 과정을 거칩니다:
- 헤더 파일에 입력 액션을 선언합니다.
- 입력 액션에 대한 콜백 함수를 작성합니다.
- 에디터에서 입력 자산(Assets)을 수동으로 할당합니다.
이 방식은 소규모 프로젝트에는 적합하지만, 입력 액션이 많아지면 관리하기 어려워지고 비효율적입니다.
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
UInputAction* MoveAction;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
UInputAction* LookAction;
2. 새로운 입력 바인딩 방식 (Lyra 샘플 프로젝트 기반)
Lyra 샘플 프로젝트에서는 Gameplay Tag를 활용하여 입력 바인딩을 간소화했습니다. 이 방식을 따르면 대규모 프로젝트에서도 입력 시스템을 효율적으로 관리할 수 있습니다.
주요 단계
- Gameplay Tag 생성
Gameplay Tag는 계층적인 이름 구조를 갖습니다. 예를 들어:- Player.Attack
- Player.Attack.Melee
여기서 Melee는 Attack의 하위 태그입니다. 태그는 특정 조건에서 서로를 취소하거나 결합할 수 있어 유용합니다.
- Input Config Data Asset 생성
입력 태그와 고유한 입력 액션을 매핑하는 데이터 자산입니다. 이를 통해 태그를 기반으로 입력 액션을 식별할 수 있습니다. - Custom Input Component 생성
기본 Input Component는 이 방식을 지원하지 않으므로, 커스텀 컴포넌트를 생성하고 필요한 입력을 바인딩하는 기능을 추가합니다. - 입력 콜백 함수 작성
입력 콜백은 캐릭터 클래스, 컨트롤러 클래스, 또는 액터 컴포넌트에 작성할 수 있습니다. Lyra 프로젝트에서는 액터 컴포넌트에서 이를 처리하지만, 여기서는 캐릭터 클래스에 작성합니다. - 에디터에서 자산 할당
마지막으로, 에디터에서 필요한 자산을 할당하여 입력 바인딩을 완성합니다.
3. Gameplay Tag 생성 과정
- 에디터를 통한 태그 추가
- 프로젝트 설정(Project Settings) → Gameplay Tags → Manage Gameplay Tags 클릭
- 태그 추가 버튼을 눌러 태그 이름을 입력합니다.
- C++를 통한 태그 추가
- C++로 태그를 추가하면 오타를 방지하고 코드에서 태그를 직접 접근할 수 있는 장점이 있습니다.
- 아래와 같은 과정을 따릅니다.
C++로 Gameplay Tag 추가하기
- 새로운 클래스 생성
- C++ 클래스 → None 선택 → 클래스 이름을 WarriorGameplayTags로 지정
- 생성된 파일은 Public 폴더에 저장합니다.
- 헤더 및 CPP 파일 내용을 모두 삭제하여 초기화
- 필요한 모듈 추가
- Build.cs 파일에 GameplayTags 모듈을 추가합니다.
-
- 컴파일 및 확인
- 컴파일 후 프로젝트를 열고 Gameplay Tags 관리 창에서 태그가 생성되었는지 확인합니다.
// WarriorGameplayTags.h
#pragma once
#include "CoreMinimal.h"
namespace WarriorGameplayTags
{
// Input Tags
extern const FGameplayTag InputTag_Move;
extern const FGameplayTag InputTag_Look;
}
// WarriorGameplayTags.cpp
#include "WarriorGameplayTags.h"
#include "NativeGameplayTags.h"
namespace WarriorGameplayTags
{
UE_DEFINE_GAMEPLAY_TAG(InputTag_Move, "InputTag.Move");
UE_DEFINE_GAMEPLAY_TAG(InputTag_Look, "InputTag.Look");
}
PublicDependencyModuleNames.Add("GameplayTags");
에디터의 Project Settings에 추가된 것을 확인할 수 있다.
다음 글에서는 Input Config Data Asset 에 대해 다뤄보겠습니다.
728x90
'Unreal Engine' 카테고리의 다른 글
Lyra Gameplay Ability System & Enhanced Input 4 (0) | 2024.11.15 |
---|---|
Lyra Gameplay Ability System & Enhanced Input 3 (0) | 2024.11.14 |
Lyra Gameplay Ability System & Enhanced Input 2 (0) | 2024.11.14 |
언리얼 프로젝트 빌드 구성 (0) | 2020.12.12 |
ERROR: UnrealBuildTool Exception: Windows SDK v8.1 must be installed in order to build this target. (0) | 2020.12.11 |