전체 글 101

[UE] UE의 string 클래스

순서언리얼 주요 문자열 클래스의 종류FStringFNameFTextANSICHAR/TCHAR 배열용도별 클래스언리얼 주요 문자열 클래스의 종류언리얼 주요 문자열 클래스의 종류로 FString, FName, FText, ANSICHAR/TCHAR 배열이 있음.FString동적 문자열 클래스로 TCHAR 기반임.복사, 덧붙이기, 포맷 등 다양한 연산을 제공함FName주로 식별자 용도로 사용함문자열 데이터를 해시 기반으로 관리하여 비교가 매우 빠름동적 문자열 연산에는 부적합함.(문자열 덧붙이기, 포맷 등)FText로컬라이제이션, UI용 문자열문자열 자체와 문화권별 번역 데이터를 포함하며 런타임 번역과 포맷을 지원함연산이 비교적 무거워 대량 문자열 연산에는 비추천함ANSICHAR/TCHAR 배열TCHAR*, A..

Unreal Engine 2025.08.29

[UE] 유효성 검사

순서IsValid란?IsValid 검사nullptr 검사IsValid와 nullptr 검사의 차이IsValid란?언리얼 엔진에서 제공하는 UObject 안전 검사 함수이다.단순히 포인터가 nullptr인지 뿐 아니라, UObject가 이미 Destroyed 상태인지까지 검사해줌. 즉 이 객체를 안전하게 접근할 수 있는지를 판단함.IsValid 검사포인터가 nullptr인지 검사UObject가 IsPendingKill() 상태인지 검사둘 다 아니라면 true 반환하며 하나라도 해당되면 false를 반환함nullptr 검사단순히 포인터 자체가 nullptr 상태인지 확인포인터가 메모리를 가리키고 있는지만 검사하기 때문에 이미 삭제된 객체라도 포인터가 남아 있으면 nullptr가 아니라 접근시 위험할 수 있음..

Unreal Engine 2025.08.29

[UE]TSubclassOf

순서TSubclassOf란?TSubclassOf 특TSubclassOf의 장단점TSubclassOf란?UE에서 클래스 타입을 안전하게 다루기 위한 템플릿 스마트 포인터TSubclassOf는 T타입을 상속한 클래스의 UClass 포인터만 가질 수 있는 템플릿 클래스이다. => 즉, 특정 부모 클래스의 서브클래스만 지정 가능하게 만들어줌.내부적으로 UClass*를 담고 있지만, 타입 체크가 컴파일/런타임에서 안전하게 이루어짐TSubclassOf 특징타입 안전특정 클래스 또는 특정 클래스의 서브클래스만 할당 가능함잘못된 타입을 할당하려고 하면 컴파일 에러 또는 런타임 체크 실패할 수 있음UClass 포인터 기반내부적으로는 UClass*를 가지고 있음필요시 .Get()으로 UClass*를 가져올 수 있음블루프린..

Unreal Engine 2025.08.29

[UE]StaticClass와 GetClass

순서UClass란?StaticClass란?GetClass란?블루프린트와의 관계StaticClass와 GetClass의 차이UClass란?언리얼 엔진에서 클래스에 대한 메타데이터와 리플렉션 정보를 담고 있는 객체즉, C++ 클래스의 타입 정보를 언리얼 런타임에서 다룰 수 있게 해주는 구조체 같은 것 StaticClass란?언리얼 빌드 과정(UHT)이 각 UClass에 대해 자동으로 생성하는 정적 함수로 해당 클레스의 UClass* 메타 객체를 반환함UHT가 각 UClass()에 대해 자동으로 생성함C++ 클래스의 UClass*를 반환함인스턴스 없이도 클래스 타입을 가리킬 수 있어 객체가 불필요함GetClass란?UObject의 인스턴스 메서드로, 현재 오브젝트가 어떤 클래스 타입인지 반환함.UObject의..

Unreal Engine 2025.08.29

[UE] 언리얼 빌드 툴/헤더 툴

순서빌드 툴(UBT)이란?헤더 툴(UHT)이란?빌드 파이프라인빌드 툴(UBT)이란?빌드 툴은 프로젝트 전체 빌드 관리를 담당함무엇을 하는가?C++ 소스 코드 컴파일 및 링크 과정을 제어하는 빌드 시스템.프로젝트의 .Build.cs 파일을 읽어서 모듈, 종속성, 빌드 설정 등을 해석Makefile 같은 역할을 한다고 생각하면 됨주요 기능소스 코드 컴파일 및 링크 관리(각 모듈 단위로 처리)필요한 경우 UHT 실행 > 리플렉션 메타데이터 생성플랫폼별/빌드 타입별 세팅 적용병렬 빌드, 캐시 활용으로 빌드 속도 최적화헤더 툴(UHT)이란?헤더 툴은 리플렉션 메타데이터 생성을 담당함무엇을 하는가?C++ 코드에서 UCLASS, USTRUCT, UENUM, UPROPERTY, UFUNCTION 등의 매크로를 파싱함...

Unreal Engine 2025.08.29

[UE]스마트 포인터

순서스마트 포인터란?스마트 포인터의 계열과 종류스마트 포인터 사용시 장단점스마트 포인터란?포인터처럼 동작하지만, 단순한 주소 값 저장 외에 메모리 관리나 안정성 보장을 추가로 해주는 객체스마트 포인터는 RAII 원칙을 적용해서, 포인터가 더 이상 필요 없어질 때 자동으로 자원을 해제 해줌.스마트 포인터의 계열과 종류Non-UObject 계열: UObject가 아닌 일반 클래스/구조체에 사용TUniquePtrC++의 unique_ptr과 동일단일 소유권, 복사 불가, 이동만 가능함범위를 벗어나면 자동 삭제됨TSharedPtr참조 카운트 기반마지막 참조가 해제될 때 객체가 삭제됨MakeShared()로 생성TWeakPtrTSharedPtr에서 약한 참조대상이 살아있는지 확인 가능(Pin()을 호출해서 유효하..

Unreal Engine 2025.08.29

[UE] 언리얼 엔진의 GC

순서가비지 컬렉션 GC란?GC의 동작 원리GC가 보는 참조와 보지 못하는 참조객체 생명주기 관련 포인트GC로 인해 자주 겪는 문제C++의 GC와 UE의 GC 차이가비지 컬렉션 GC란?UObject 기반 객체들의 메모리를 자동으로 정리하는 도달성 기반의 마크-앤-스윕 시스템이다.UObject들 간의 레퍼런스를 따라 도달 가능한 객체는 살리고, 도달 불가능한 객체는 수거함.도달성이란?특정 객체가 아직 사용중이라고 간주할 수 있는지를 뜻함.도달 가능한 객체: 현재 실행 중인 코드에서 경로를 따라 접근할 수 있는 객체 > 살려둠도달 불가능한 객체: 어느 곳에서도 참조하지 않는 객체 > 필요없는 메모리로 판단 > 수거대상GC의 동작 원리루트(Root) 수집엔진이 시작.유지하는 지속적 객체들, AddToRoot()..

Unreal Engine 2025.08.28

[UE] 언리얼의 클래스들

순서GameMode 클래스GameInstance 클래스GameState 클래스PlayerState 클래스GameMode 클래스역할: 게임 규칙과 규칙 실행자특징GameMode는 서버 전용 클래스로 서버에서만 존재하며 클라이언트에서는 존재하지 않음 > 클라이언트에서는 GameState로 동기화만 받도록 함GameMode는 레벨마다 1개만 존재함클라이언트만 있는 싱글 플레이의 경우 클라이언트 프로세스 안에 서버 역할도 함께 실행을 시킴 => 로컬 서버 + 로컬 클라이언트가 같은 프로세스 안에 동시에 존재하는 구조로 로컬 서버 부분에서 GameMode가 생성됨.로컬 클라이언트는 내부적으로 서버가 가진 GameMode의 규칙을 그대로 따름.어떤 플레이어 캐릭터를 사용할지, 플레이어가 어떻게 스폰되지, 점수 규칙..

Unreal Engine 2025.08.28

[UE]언리얼 오브젝트

순서오브젝트란?UObject의 특징주요 UObject 하위 개념오브젝트의 생명 주기Class Default Object란?오브젝트란?모든 클래스의 최상위 Base 클래스임언리얼에서 사용하는 대부분의 것은 UObject를 상속받아 만들어짐.주요 하위 개념언리얼의 리플렉션 시스템, GC, 에디터와의 연동 등을 가능하게 해주는 핵심 클래스임UObject의 특징리플렉션 지원: UCLASS(), UPROPERTY(), UFUNCTION()같은 매크로를 붙이면 언리얼이 해당 객체를 에디터/블루프린트에서 인식할 수 있음.GC: 일반 C++ 포인터 관리와 다르게 UObject 기반 클래스에서 UPROPERTY()로 등록된 포인터는 언리얼의 GC가 추적하여 자동으로 메모리를 관리함에디터 및 블루프린트 통합: UObjec..

Unreal Engine 2025.08.28

[CS]뮤텍스와 세마포어

순서뮤텍스란?뮤텍스의 특징세마포어란?세마포어의 특징공통 개념뮤텍스와 세마포어 비교뮤텍스란?Mutual Exclusion한 번에 하나의 스레드만 접근 가능함임계영역을 보호하는 용도이다.뮤텍스의 특징1:1 접근 제어로 동시 접근이 불가함소유권 개념으로 잠근 스레드만 해제 가능함재진입 가능 여부일반 Mutex: 소유자가 아니면 재진입 불가 > 데드락 가능Recursive Mutex: 소유자가 재진입 가능세마포어란?동시 접근 가능한 스레드 수를 카운트로 관리카운트 = 1이면 뮤텍스와 동일하게 동작 > Binary Semaphore카운트 > 1이면 여러 스레드가 동시에 접근 가능 > Counting Semaphore세마포어의 특징여러 스레드 허용 가능 > 임계영역 공유 가능소유권 없음 > unlock은 다른 스레..

CS 2025.08.28