3 - C++ 코드 작성 및 컴파일

C++ 클래스를 작성하고 언리얼 엔진으로 컴파일합니다.

Windows
MacOS
Linux
On this page
  1. Visual Studio 에서 Solution Explorer 패널을 사용하여 새로 만든 C++ 파일을 찾아보겠습니다. 우리 예제에서는 이름이 FloatingActor.cpp, FloatingActor.h 식으로 되어있으며, QuickStart 프로젝트 안에 있을 것입니다.

    SolutionExplorer_Files.png

    이제 코드를 작성하려는 시점입니다. 이 페이지 하단에서 종료 시점 상태의 사용된 모든 코드를 찾아보실 수 있습니다.

    Xcode 에서 새로 만든 C++ 파일을 찾아보겠습니다. 우리 예제에서는 이름이 FloatingActor.cpp, FloatingActor.h 식으로 되어있으며, QuickStart 프로젝트 안에 있을 것입니다.

    SolutionExplorer_Files_Mac.png

    이제 코드를 작성하려는 시점입니다. 이 페이지 하단에서 종료 시점 상태의 사용된 모든 코드를 찾아보실 수 있습니다.

1. FloatingActor.h 에서 닫힌 괄호와 파일 끝의 세미콜론 바로 앞에 다음 코드를 추가하겠습니다:

    float RunningTime;
  1. FloatingActor.cpp 로 전환하여, AFloatingActor::Tick 끝의 닫힌 괄호 직전에 다음 코드를 추가합니다:

    FVector NewLocation = GetActorLocation();
    float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
    NewLocation.Z += DeltaHeight * 20.0f;       //Scale our height by a factor of 20
    RunningTime += DeltaTime;
    SetActorLocation(NewLocation);

    방금 작성한 코드는 FloatingActor 가 위아래로 부드럽게 나타났다 사라지도록 만드는데, 시간에 따른 운동 기록을 추적하기 위해 만든 RunningTime 변수를 사용한 것입니다.

  • 코딩이 완료되었으니, Solution Browser 의 프로젝트에 우클릭 후 Build 명령을 선택하거나, 언리얼 에디터컴파일 버튼을 누르면 컴파일 가능합니다. 컴파일이 성공하면 언리얼 에디터 가 자동으로 변경사항을 로드합니다.

    CompileFromVS.png

    Visual Studio 에서 컴파일하는 모습.

    CompileFromEditor.png

    언리얼 에디터 에서 컴파일하는 모습.

Xcode 에서 빌드할 때는 게임 프로젝트만 컴파일하는 것이지, 에디터는 아닙니다.

  • 코딩이 완료되었으니 XCode 의 Debug Configuration 을 사용하여 컴파일해 주면 됩니다. Product > Build 옵션입니다. XCode 의 Development Configuration 을 사용해서도 컴파일 가능합니다. Product > Build For > Profiling 옵션입니다. 또는 언리얼 에디터컴파일 버튼을 눌러도 됩니다. 컴파일이 성공하면, 언리얼 에디터 에 자동으로 변경사항이 로드됩니다.

CompileFromXCode.png

Xcode 내 빌드 명령 위치입니다.

ProjectBuild_mac.png

XCode 에서 현재 선택된 구성으로 컴파일하는 모습입니다.

ProjectBuildProfile_mac.png

XCode 의 Development 구성으로 컴파일하는 모습입니다.

CompileFromEditor.png

언리얼 에디터 에서 컴파일하는 모습입니다.

바이너리 에디터를 실행할 때, Uncooked 환경설정으로 프로젝트를 리빌드한 경우 -game 플래그를, Debug 환경설정으로 프로젝트를 리빌드한 경우 -debug 플래그를 붙여주는 것이 중요합니다.

이제 코드를 기반으로 언리얼 에디터 에 오브젝트를 만들 준비가 되었습니다! 참고로, 이 글에 사용된 모든 코드는 아래 포함되어 있습니다.

완성 코드

FloatingActor.h

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.

#pragma once

#include "GameFramework/Actor.h"
#include "FloatingActor.generated.h"

UCLASS()
class QUICKSTART_API AFloatingActor : public AActor
{
    GENERATED_BODY()

public: 
    // Sets default values for this actor's properties
    AFloatingActor();

protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

public:
    // Called every frame
    virtual void Tick( float DeltaSeconds ) override;

    float RunningTime;
};

FloatingActor.cpp

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.

#include "QuickStart.h"
#include "FloatingActor.h"

// Sets default values
AFloatingActor::AFloatingActor()
{
    // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
    PrimaryActorTick.bCanEverTick = true;

}

// Called when the game starts or when spawned
void AFloatingActor::BeginPlay()
{
    Super::BeginPlay();

}

// Called every frame
void AFloatingActor::Tick( float DeltaTime )
{
    Super::Tick( DeltaTime );

    FVector NewLocation = GetActorLocation();
    float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
    NewLocation.Z += DeltaHeight * 20.0f;       //Scale our height by a factor of 20
    RunningTime += DeltaTime;
    SetActorLocation(NewLocation);
}
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback