본문으로 건너뛰기
Unreal Engine C++ 기초집LESSON 04

첫 C++ Actor

난이도입문
예상 시간35분
선수지식3강의 프로젝트 구조

4강. 첫 C++ Actor

1. 이번 강의에서 해결할 문제

어떤 초기화는 생성자에, 어떤 초기화는 BeginPlay에 써야 하는지 불분명하고 모든 로직을 Tick에 넣기 쉽습니다. 배치 가능한 첫 Actor로 수명 주기의 책임을 구분합니다.

2. 학습 목표

3. 핵심 개념

Actor는 World에 배치하거나 런타임에 Spawn할 수 있는 객체입니다. 생성자는 클래스 기본 객체를 만드는 과정에도 호출될 수 있으므로 World의 다른 Actor를 찾는 작업에 적합하지 않습니다. 기본 Subobject 생성과 기본값 설정은 생성자, 플레이 시작 시 World 상태가 필요한 작업은 BeginPlay에 둡니다.

Tick은 매 프레임 호출되므로 명확한 연속 변화가 있을 때만 사용합니다. 이번 표적은 회전을 눈으로 확인하기 위해 제한적으로 Tick을 쓰고, 13강부터 일정 작업은 Timer로 옮깁니다.

4. 단계별 실습

파일 경로: Source/TopDownSurvival/Actors/SurvivalTarget.h

SurvivalTarget.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "SurvivalTarget.generated.h"

UCLASS()
class TOPDOWNSURVIVAL_API ASurvivalTarget : public AActor
{
GENERATED_BODY()

public:
ASurvivalTarget();

protected:
virtual void BeginPlay() override;
virtual void Tick(float DeltaSeconds) override;

UPROPERTY(EditAnywhere, Category = "Target", meta = (ClampMin = "0.0"))
float RotationSpeed = 45.0f;
};

파일 경로: Source/TopDownSurvival/Actors/SurvivalTarget.cpp

SurvivalTarget.cpp
#include "Actors/SurvivalTarget.h"

#include "Engine/Engine.h"

ASurvivalTarget::ASurvivalTarget()
{
PrimaryActorTick.bCanEverTick = true;
}

void ASurvivalTarget::BeginPlay()
{
Super::BeginPlay();
UE_LOG(LogTemp, Display, TEXT("SurvivalTarget 시작: %s"), *GetName());
}

void ASurvivalTarget::Tick(float DeltaSeconds)
{
Super::Tick(DeltaSeconds);
AddActorLocalRotation(FRotator(0.0f, RotationSpeed * DeltaSeconds, 0.0f));
}

Unreal Editor

  1. C++ ASurvivalTarget의 자식 Blueprint BP_SurvivalTarget을 만듭니다.
  2. 레벨에 배치하고 Rotation Speed를 90으로 바꿉니다.
  3. Play 후 Output Log와 회전을 확인합니다. Mesh는 6강에서 추가합니다.

5. 코드가 동작하는 이유

GENERATED_BODY는 Reflection과 생성 코드가 클래스에 연결될 자리를 만듭니다. TOPDOWNSURVIVAL_API는 다른 모듈에서 이 클래스를 사용할 때 필요한 내보내기 표시입니다. DeltaSeconds를 곱하면 프레임 수가 달라도 초당 회전량이 비슷해집니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

첫 C++ Actor 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“첫 C++ Actor” 실습 결과를 해석하는 올바른 기준은 무엇인가요?
  2. 문제 2“첫 C++ Actor”에서 ‘생성자에서 GetWorld로 게임 Actor 검색’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

4강. 첫 C++ Actor 미완료 상태