C++와 Unreal Engine으로 3D 게임 개발 1-1~4
C++ 텍스트 콘솔 RPG 팀플을 마치고
이제 챕터 3 시작!

1. WHY
언리얼 엔진 C++ 개발 환경 설정 및 기본 구조 익히기
2. WHAT
- 프로젝트 폴더 구조 이해
- vsconfig
- Visual Studio Configuration 파일, VS 프로젝트에서 사용되는 특정 설정 및 구성 요소 설치 요구 사항 정의
- .vs 폴더
- 디버깅과 솔루션 설정에 관련된 파일 저장
- Binaries 폴더
- C++ 코드 빌드 시 생성되는 실행 파일 저장 (.exe, .dll 등)
- 폴더 삭제 > 재 빌드 시 다시 생성 > 시간 ↑
- Config 폴더
- .ini 파일(게임 플레이, 렌더링, 입력 등의 설정)
- Content 폴더
- 언리얼 에디터의 Content Browser와 연결
- DerivedDataCache 폴더 (삭제 O)
- 에셋, 쉐이더 등 빠른 처리를 위한 캐시 파일
- Intermediate 폴더 (삭제 O)
- 임시 파일 및 빌드 중간 결과물 저장
- 빌드 문제 발생 > 폴더 삭제 후 재 빌드
- Saved 폴더 (삭제 O)
- 자동 저장 파일, 로그, 크래시 덤프 등
- Source 폴더⭐
- C++ 소스 코드(.cpp, .h)가 들어 있는 핵심 폴더, 실제 게임 로직을 작성하는 곳
- 빌드
언리얼 에디터 종료 상태 > ctrl + shift + b (빌드) > dll 파일 갱신 > F5 (디버깅)
- 빌드 문제 복구 하기
- 언리얼 에디터와 Visual Studio 종료
- 프로젝트 폴더에서 Intermediate, DerivedDataCache, Saved 폴더 삭제
- 이 폴더들은 빌드 캐시 및 임시 데이터를 담고 있음.
- 삭제 후 다시 빌드 > 새로 생성, 잘못된 캐시로 인한 오류를 해결.
- .uproject 파일을 우클릭 → “Generate Visual Studio project files”
- 솔루션(.sln) 파일과 프로젝트 설정을 재생성, 누락되었거나 꼬인 구성을 복구.
- Visual Studio에서 클린 빌드 수행
- 새로 생성된 솔루션 (.sln 파일)을 Visual Studio에서 열고 다음을 수행
- Build → Clean Solution으로 기존 빌드 산출물을 정리
- Build → Build Solution으로 프로젝트 재빌드
- 에러가 난다면 Output 창과 Error List를 확인해 원인을 파악하고 수정.
- 새로 생성된 솔루션 (.sln 파일)을 Visual Studio에서 열고 다음을 수행
- 언리얼 에디터 다시 실행
- 에디터를 다시 실행해 코드 변경 사항이 반영되었는지 확인.
- 여전히 문제가 해결되지 않는다면, 프로젝트 내 Saved/Logs 폴더에 있는 로그 파일 > 구체적인 에러 메시지를 확인, 엔진 버전 및 프로젝트 설정을 점검.
- Actor 클래스 삭제
- 언리얼 에디터 종료
- VS Solution Explorer에서 .h, .cpp 파일 우클릭 → Remove
- 프로젝트 폴더에서 물리적 파일 삭제
- VS 빌드 > 에디터 재실행
- C++로 Actor 클래스에 컴포넌트 추가
#include "Item.generated.h"
UCLASS()
class SPARTAPJ_API AItem : public AActor
{
GENERATED_BODY()
public:
AItem();
protected:
USceneComponent* SceneRoot;
UStaticMeshComponent* StaticMeshComp;
};
Item.h
#include "Item.h"
// Sets default values
AItem::AItem()
{
// 루트 컴포넌트 지정 ( 주로 SceneComponent )
SceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
SetRootComponent(SceneRoot);
// StaticMesh 컴포넌트 생성 및 루트에 부착
StaticMeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
StaticMeshComp->SetupAttachment(SceneRoot);
// StaticMesh와 Material 에셋 로드 및 설정
static ConstructorHelpers::FObjectFinder<UStaticMesh> MeshAsset(TEXT("/Game/Resources/Props/SM_Potion_A.SM_Potion_A"));
if (MeshAsset.Succeeded())
{
StaticMeshComp->SetStaticMesh(MeshAsset.Object);
}
static ConstructorHelpers::FObjectFinder<UMaterial> MatAsset(TEXT("/Game/Resources/Materials/M_Coin_B.M_Coin_B"));
if (MatAsset.Succeeded())
{
StaticMeshComp->SetMaterial(0, MatAsset.Object);
}
}
Item.cpp
(+) 단축키
- ctrl + k + o : .h ↔ .cpp 전환
- ctrl + F4 : 창 닫기
- F12 : 정의로 이동
- ctrl + - : 정의 back
JetBrains ToolBox - Rider
'내배캠Unreal_TIL > UE' 카테고리의 다른 글
| [TIL] 2026-01-12 | UE C++ 캐릭터 컨트롤 (0) | 2026.01.12 |
|---|---|
| [TIL] 2026-01-09 | C++ 문자 종류 판단, Actor 라이프 사이클, Transform, 리플렉션 시스템 (0) | 2026.01.09 |
| [TIL] 2025-12-24 | 과제 5 구현, 레벨 테스트 후기 (1) | 2025.12.24 |
| [TIL] 2025-12-22 | UE와 VS 충돌 ? 해결 및 언리얼 C++ 시작하기 (0) | 2025.12.22 |
| [UE5] 언리얼 엔진 그림자 깨질 때.. 해결, 나나이트 (0) | 2025.12.08 |