AActor란
Unreal Engine에서 모든 게임 오브젝트의 기본 베이스 클래스 중 하나이다.
즉, 게임 내에서 플레이어 캐릭터, 적 캐릭터, 아이템, 환경 요소 등 대부분이 AActor 클래스에서 파생될 수 있다.
AAcor 클래스는 게임 내 오브젝트의 기본적인 특징과 동작을 정의한다.
이 클래스를 상속받은 클래스들은 게임 내에서 배치되고, 이동하고, 충돌을 감지하며, 렌더링되고
상호작용 할 수 있다.
게임에서 오브젝트의 위치, 회전, 크기 등의 속성을 제어할 수 있으며, 이벤트를 처리하여 게임 로직을 구현할 수 있다.
간단히 말해, AActor 클래스는 Unreal Engine에서 게임 오브젝트의 기본적인 특징과 동작을 제공하는 클래스이다.
게임의 거의 모든 것이 이 클래스를 기반으로 만들어진다.
사용
간단한 예제를 만들었다.
이 예제에서는 Aura라는 클래스를 만들고 생성자에서 [안녕하세요, 액터입니다] 라는 메시지를
출력하는 코드를 작성하였다.
AuraActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
UCLASS()
class AURA_API Aura : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
Aura();
};
AuraActor.cpp
#include "MyActor.h"
// Sets default values
Aura::Aura()
{
// Set this actor to call Tick() every frame
PrimaryActorTick.bCanEverTick = false;
// Print a message when the actor is created
UE_LOG(LogTemp, Warning, TEXT("안녕하세요, 액터입니다"));
}
그 외
- UObject의 자식 클래스로 UObject들의 특징을 모두 가짐
- 생성(Spawn)한 Actor는 명시적으로 삭제가 필요하다.
- 단, 레벨이 이동등으로 레벨이 언로드 되면, 생성된 모든 Actor 들이 삭제된다.
중요 함수들
- BeginPlay
- Tick
- EndPlay
예제
MyActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
UCLASS()
class YOURPROJECT_API AMyActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyActor();
// Called when the game starts or when spawned
virtual void BeginPlay() override;
// Called every frame
virtual void Tick(float DeltaTime) override;
// Called when the game ends or when destroyed
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
};
MyActor.cpp
#include "MyActor.h"
// Sets default values
AMyActor::AMyActor()
{
// Set this actor to call Tick() every frame
PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
Super::BeginPlay();
// Print a message when the actor begins play
UE_LOG(LogTemp, Warning, TEXT("Actor has begun play!"));
}
// Called every frame
void AMyActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// Add your actor's per-frame functionality here
}
// Called when the game ends or when destroyed
void AMyActor::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
Super::EndPlay(EndPlayReason);
// Print a message when the actor ends play
UE_LOG(LogTemp, Warning, TEXT("Actor has ended play!"));
}
AMyActor 클래스를 정의하고 해당 클래스의 생성자에서 Tick 함수를 호출하도록 설정하였다.
게임이 시작될 때 (BeginPlay)와 게임이 종료될 때(EndPlay) 각각에 해당하는 함수들에서
메시지를 출력하도록 설정했다.
게임에서 해당 클래스의 인스턴스를 생성하면 이러한 메시지가 게임 로그에 출력된다.
'Unreal Engine' 카테고리의 다른 글
[UE5] ActivateAbility (0) | 2024.05.18 |
---|---|
[UE5] TObjectPtr (0) | 2024.05.17 |
[UE5] 속성 기반 수정자 (0) | 2024.04.16 |
[UE5] GAS(GameplayAbilitySystem) I (0) | 2024.03.25 |
[UE5] C++ 클래스 생성과 기본 이벤트 (2) | 2023.10.30 |