목차
- 커스텀 컴포넌트를 만드는 이유
- 커스텀 컴포넌트 만들기
1. 커스텀 컴포넌트를 만드는 이유
커스텀 컴포넌트가 왜 필요할까? 플레이어든 적이든 클래스 마다 필요한 속성들이 있을 것이다. 그리고 그러한 속성 중 모든 클래스에게 필요한 속성들도 있을 것이다.
체력 속성이 대표적이며 이러한 기능들을 각각의 클래스마다 따로 만들면 비효율적이고 객체지향프로그래밍 사고에도 맞지 않는다.
그렇기 때문에 커스텀 컴포넌트를 추가하여 필요한 클래스에서 Add 하여 기능을 사용하도록 할 것이다.
2. 커스텀 컴포넌트 만들기
C++ 클래스를 만들어보자.
부모 클래스를 살펴보면 Actor 컴포넌트가 있는것을 볼 수 있다.
액터 컴포넌트의 이름은 AttributeComponent로 지정하였다.
컴포넌트를 만들었으니 속성(변수)을 만들어주자.
private:
// 현재 체력
UPROPERTY(EditAnywhere, Category = "Actor Attribute")
float Heath;
// 전체 체력
UPROPERTY(EditAnywhere, Category = "Actor Attribute")
float MaxHeath;
체력 변수들을 선언해주었다. 이제 이 컴포넌트를 에너미 클래스에 추가하려고 한다.
네머지 클래스로 돌아간 뒤 우리가 그동안 컴포넌트를 추가했던 것처럼 단순히 포인터로 컴포넌트 변수를 추가해주면 된다.
class PRACTICE_API AEnemy : public ACharacter, public IHitInterface
{
// ...
private:
UPROPERTY(VisibleAnywhere)
class UAttributeComponent* Attributes;
// 생성자
Attributes = CreateDefaultSubobject<UAttributeComponent>(TEXT("Attributes"));
액터 컴포넌트는 실체가 존재하는 것이 아니기 때문에 따로 Attach를 할 필요가 없다.
컴파일하면 액터컴포넌트가 생긴 것을 볼 수 있다.
이제 Attribute 컴포넌트가 생겼으니 체력바를 만들어 현재 체력을 볼 수 있게 해보자.
'게임프로그래밍 > 실습1' 카테고리의 다른 글
[언리얼 실습] 47. C++ 유저 위젯 클래스 만들어서 블루프린트 변수와 C++ 변수 바인딩하기 (0) | 2024.11.01 |
---|---|
[언리얼 실습] 46. 위젯 컴포넌트 만들기 (0) | 2024.11.01 |
[언리얼 실습] 44. 나이아가라 컴포넌트 모듈 추가하기 (0) | 2024.11.01 |
[언리얼 실습] 43. 다양한 부실 수 있는 액터 만들기 (0) | 2024.11.01 |
[언리얼 실습] 42. 다양한 보물이 나오게 하기. (0) | 2024.11.01 |