2026/06 14

언리얼 C++ 과제 4

스파르타 클럽 챕터3 과제4 진행Pawn으로 이동하는 객체 만들기와 도전과제로 비행체 만들기입니다. https://www.youtube.com/watch?v=qnovx8h6Qr8 Pawn에 걷기, 점프, 달리기를 추가했고, 추가적으로 Pawn클래스를 하나 더 만들어 비행체를 구현했습니다. 이동과 화면회전은 AddActorLocalLocation과 AddActorLocalRotation으로 구현했습니다.Character클래스의 경우는 이동할 때 바닥이나 벽면에서 Block되었어도 미끄러지도록 구현이 되어있지만Pawn의 경우 그런 물리로직을 직접 구현해야 했습니다. SpartaPawn.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Pawn.h"#..

동적할당

동적 할당 (Dynamic Allocation)동적 할당이란?프로그램 실행 중에 필요한 메모리를 직접 할당하는 것을 의미한다.동적으로 할당된 메모리는 힙(Heap) 영역에 저장되며,개발자가 직접 생성하고 해제해야 한다.메모리 할당int* p = new int;*p = 10;동작 순서힙 영역에 int 크기의 메모리 할당할당된 주소를 p에 저장해당 메모리에 10 저장메모리 해제delete p;p = nullptr;동작 순서힙 메모리 반환포인터는 더 이상 유효하지 않음nullptr로 초기화하는 것이 안전함배열 동적 할당int* arr = new int[5];위 코드는 int 5개를 저장할 수 있는 배열을 힙에 생성한다.배열 메모리 해제delete[] arr;arr = nullptr;배열은 반드시 delete[..

c++/기초 2026.06.08

const

const 정리1. const 기본 개념const는 값을 변경할 수 없게 만드는 키워드이다.const int a = 10;a = 20; // 오류읽기 전용 변수(상수)선언 후 값 변경 불가능2. const를 사용하는 이유값 변경 방지실수로 데이터를 수정하는 것을 막을 수 있다.코드 의도 명확화해당 값이 변경되면 안 된다는 것을 명확하게 표현할 수 있다.최적화 가능컴파일러가 추가 최적화를 수행할 수 있다.3. 포인터에서 const(1) 값이 constconst int* p = &a;또는int const* p = &a;의미포인터가 가리키는 값 변경 불가포인터 주소 변경 가능*p = 20; // 오류p = &b; // 가능(2) 포인터 자체가 constint* const p = &a;의미포인터 주소 변경 불..

c++/기초 2026.06.08

값 타입과 참조타입

값 타입(Value Type)과 참조 타입(Reference Type)데이터를 다루는 방식은 크게 값을 직접 저장하는 방식과 어딘가에 있는 데이터를 참조하는 방식으로 나눌 수 있다.값 타입 (Value Type)데이터 자체를 직접 저장하는 타입이다.변수를 복사하면 데이터도 함께 복사된다.예시int a = 10;int b = a;메모리a = 10b = 10b는 a의 값을 복사하여 별도의 데이터를 가진다.값 변경int a = 10;int b = a;b = 100;결과a = 10b = 100원본은 변경되지 않는다.메모리 구조┌──────┐│ a=10 │└──────┘┌──────┐│ b=10 │└──────┘서로 다른 메모리를 가진다.대표적인 값 타입charshortintlonglong longfloatdou..

c++/기초 2026.06.08

extern (외부 변수)

extern (외부 변수)현재 파일이 아닌 다른 파일에 존재하는 변수나 함수를 참조하기 위한 키워드외부 변수란?현재 파일의 코드 외에다른 파일에 존재하는 변수를 의미한다. 예)// A.cppint a = 10;// B.cppextern int a;B.cpp에서는 실제 변수는 없지만extern을 통해"어딘가에 존재하는 변수 a를 사용하겠다"라고 컴파일러에게 알려주는 것이다.사용 예제변수 정의// A.cppint a = 10;변수 참조// B.cppextern int a;void Func(){ a = 20;}문법적으로 아무 문제가 없다.extern의 동작 방식컴파일 단계extern int a;컴파일러는"어딘가에 int형 변수 a가 존재한다고 가정"하고 코드를 컴파일한다.따라서 실제 변수의 존재 여부를 ..

c++/기초 2026.06.05

분할 구조 (Header / Source File)

분할 구조 (Header / Source File)하나의 코드를 .h 파일과 .cpp 파일로 나누어 관리하는 방식일반적으로.h : 선언(Declaration).cpp : 구현(Definition)을 담당한다.장점코드 관리가 편해짐기능별로 파일을 분리할 수 있다.예)Player.hPlayer.cppMonster.hMonster.cppInventory.hInventory.cpp파일 역할이 명확해져 유지보수가 쉬워진다.협업 시 충돌 감소여러 사람이 동시에 작업할 때각자 다른 파일을 수정할 수 있다.예)A : Player.cpp 수정B : Inventory.cpp 수정Git 충돌이 줄어든다.재사용 가능헤더만 include 하면다른 코드에서도 쉽게 사용할 수 있다.예)#include "Player.h"컴파일 속도..

c++/기초 2026.06.05

nullptr

nullptr포인터 전용 null 값NULL의 문제점void func(int x);void func(int* x);func(NULL);NULL은 일반적으로 다음과 같이 정의되어 있다.#define NULL 0즉, NULL은 결국 정수 0이다.따라서void func(int);void func(int*);두 함수 모두 호출 후보가 된다.0 → int 변환 가능0 → int* 변환 가능컴파일러는 어떤 함수를 호출해야 하는지 결정할 수 없기 때문에 모호성(Ambiguity) 오류가 발생한다.nullptr 사용void func(int x);void func(int* x);func(nullptr);nullptr은 std::nullptr_t 타입을 가지는 특수한 값이다.포인터 타입으로만 변환 가능정수 타입으로는 변환..

c++/기초 2026.06.05

언리얼 C++과제3

스파르타 클럽 챕터3 과제3 진행 (1/2)회전발판과 움직이는 장애물을 만드는 과제입니다.현재 발판의 회전과 움직이는 장애물을 구현했습니다. https://youtu.be/lf_np--qstI?si=o1tioc16b0MkbILz 액터는 MovingActor와 RotateActor클래스를 따로 만들어서 BP로 상속받아서현재는 맵에 직접 넣는 방식으로 구현했습니다. MovingActor.h// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "MovingActor.generated.h"..

FOnlineSessionSettings

제가 학습한 것을 기준으로 만들어진 것이기 때문에 이 글 내용이 틀렸을 수도 있습니다.FOnlineSessionSettingsFOnlineSessionSettings는 세션을 만들 때 OnlineSubsystem에게 넘겨주는 설정값 묶음이다.직접 방을 생성하는 클래스라기보다는, 어떤 방식의 방을 만들지 설명하는 데이터 객체라고 볼 수 있다.실제 세션 생성은 CreateSession()에서 이루어지며,FOnlineSessionSettings에 설정한 값에 따라 세션의 동작이 결정된다.기본 개념TSharedPtr SessionSettings = MakeShareable(new FOnlineSessionSettings());기본 생성자에서는 대부분의 값이 다음과 같이 초기화된다.false0즉, 대부분의 기능은..

FInputModeUIOnly

Udemy에서 구매한 강의를 공부하면서 배운 내용입니다.개인적으로 따로 알고싶어서 공부한 부분들도 있으니 내용에 틀린 것이 있을 수 있습니다.https://www.udemy.com/course/unreal-engine-5-cpp-multiplayer-shooter/?couponCode=MT260602G3Over 64 hours of content!Learn all about Unreal Engine multiplayer in this fully comprehensive C++ course. From scratch, we create a complete multiplayer shooter game, capable of creating and joining game sessions and connecting..