본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진에서 액터 컴포넌트란 무엇이며, 어떻게 활용할 수 있나요?

by 밝음의기둥 2024. 12. 26.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진에서 액터 컴포넌트란 무엇이며, 어떻게 활용할 수 있는지 간략히 알아보았습니다.


질문 >

언리얼 엔진에서 액터 컴포넌트란 무엇이며, 어떻게 활용할 수 있나요?

답변 >

액터 컴포넌트(Actor Component)는 언리얼 엔진에서 액터에 부착되어 추가적인 기능을 제공하는 로직 중심의 모듈입니다. 액터 컴포넌트는 일반 컴포넌트와 달리 트랜스폼(위치, 회전, 크기)을 가지지 않으며, 렌더링 관련 속성도 없습니다. 대신, 특정 동작이나 기능을 모듈화하여 재사용 가능하도록 설계되었습니다.


1. 액터 컴포넌트의 특징

  • 트랜스폼 없음: 액터 컴포넌트는 위치나 회전에 의존하지 않으며, 순수한 로직을 처리합니다.
  • 모듈성: 재사용 가능한 동작을 정의하여 여러 액터에 동일한 동작을 적용할 수 있습니다.
  • 경량성: 트랜스폼이나 렌더링 데이터가 없으므로 시스템 자원을 적게 사용합니다.
  • Blueprint 및 C++ 지원: 블루프린트와 C++로 제작 및 사용이 가능합니다.

2. 액터 컴포넌트 활용 예시

2.1 생명 관리 시스템

  • 액터 컴포넌트를 활용해 Health 관련 로직을 분리하고 캐릭터, 적, 구조물 등 다양한 액터에서 재사용.

2.2 스킬 시스템

  • 각 액터에 독립적으로 작동하는 스킬 로직을 컴포넌트로 구현.

2.3 사운드 처리

  • 사운드 효과를 관리하거나 재생하는 컴포넌트를 만들어, 여러 액터에서 쉽게 사운드 기능을 추가.

2.4 AI 행동 로직

  • AI 행동을 처리하는 모듈식 컴포넌트 생성.

3. 액터 컴포넌트 생성 및 사용

3.1 블루프린트에서 액터 컴포넌트 생성

  1. 블루프린트 클래스 생성:
    • Actor Component 유형을 선택.
  2. 컴포넌트 로직 작성:
    • 이벤트 그래프를 사용해 필요한 동작을 구현.
  3. 액터에 부착:
    • 액터 블루프린트에서 Add Component 버튼을 클릭하고 생성한 액터 컴포넌트를 추가.

3.2 C++에서 액터 컴포넌트 생성

1) 컴포넌트 클래스 작성

헤더 파일:

#pragma once

#include "CoreMinimal.h"#include "Components/ActorComponent.h"#include "MyActorComponent.generated.h"UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))
class MYPROJECT_API UMyActorComponent : public UActorComponent
{
    GENERATED_BODY()

public:
    UMyActorComponent();

protected:
    virtual void BeginPlay() override;

public:
    UFUNCTION(BlueprintCallable, Category="Custom")
    void PerformAction();
};

소스 파일:

#include "MyActorComponent.h"

UMyActorComponent::UMyActorComponent()
{
    PrimaryComponentTick.bCanEverTick = true; // Tick 활성화 여부
}

void UMyActorComponent::BeginPlay()
{
    Super::BeginPlay();
}

void UMyActorComponent::PerformAction()
{
    UE_LOG(LogTemp, Warning, TEXT("Action Performed!"));
}

2) 액터에서 컴포넌트 추가

액터 클래스에서:

#include "MyActorComponent.h"

AMyActor::AMyActor()
{
    MyComponent = CreateDefaultSubobject<UMyActorComponent>(TEXT("MyComponent"));
}


4. 액터 컴포넌트 주요 기능

4.1 Tick 기능

  • 액터 컴포넌트는 필요에 따라 매 프레임마다 호출되는 Tick 기능을 활성화할 수 있습니다.
  • PrimaryComponentTick.bCanEverTick = true; 설정 시 사용 가능.

4.2 이벤트 함수

  • BeginPlay: 액터가 시작될 때 호출.
  • OnComponentCreated: 컴포넌트가 생성될 때 호출.
  • OnRegister/OnUnregister: 컴포넌트가 등록/해제될 때 호출.

4.3 액터와의 연계

  • GetOwner(): 컴포넌트가 부착된 액터를 가져옵니다.
AActor* Owner = GetOwner();


5. 장점

  1. 모듈화: 반복적인 동작을 단일 컴포넌트로 구현하여 코드 재사용성 극대화.
  2. 액터 간 독립성: 동일한 컴포넌트를 여러 액터에 쉽게 적용 가능.
  3. 퍼포먼스 최적화: 트랜스폼이 필요 없는 경량 동작에 적합.

6. 활용 사례

  • 체력 관리 컴포넌트: 다양한 액터에서 사용 가능한 체력 시스템.
  • 스킬/효과 컴포넌트: 스킬, 버프, 디버프 효과를 컴포넌트로 구현.
  • AI 행동 컴포넌트: AI의 개별 행동을 처리하는 모듈화된 시스템.
  • 사운드/이펙트 관리 컴포넌트: 사운드 및 이펙트 재생 로직 분리.

7. 디버깅 및 관리

  • Log 활용: UE_LOG를 사용해 디버깅 메시지 출력.
  • 컴포넌트 계층: 블루프린트에서 컴포넌트의 활성 상태 확인.
  • 비활성화 가능: 필요 시 SetComponentTickEnabled(false)로 Tick을 비활성화.

액터 컴포넌트는 액터의 기능을 확장하고 코드 재사용성을 높이는 데 매우 유용한 도구입니다. 적절히 활용하면 복잡한 시스템을 모듈화하고 유지보수를 쉽게 할 수 있습니다.



🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형