[이득우의 언리얼] 12. 언리얼 엔진의 메모리 관리
·
기타/[강의] 이득우의 언리얼 프로그래밍 Part1
개요이번 강의에서는 Unreal Engine의 가비지 컬렉션(Garbage Collection) 시스템을 이해하고, UObject 포인터를 안전하게 관리하는 방법을 학습합니다. C++의 고질적인 메모리 문제를 해결하는 Unreal의 자동 메모리 관리 시스템을 실습을 통해 체득합니다. 학습 목표- Unreal Engine의 가비지 컬렉션 시스템 이해- UObject 포인터의 안전한 관리 방법 학습- 댕글링 포인터 문제 해결 방법 습득- UPROPERTY의 중요성과 올바른 사용법 이해- FGCObject를 사용한 고급 메모리 관리 기법 학습 C++ 메모리 관리의 고질적 문제1. 메모리 누수// ❌ 잘못된 예: 메모리 누수void BadFunction(){ MyClass* Object = new MyC..
[이득우의 언리얼] 11. 언리얼 컨테이너 라이브러리 - 구조체, Map
·
기타/[강의] 이득우의 언리얼 프로그래밍 Part1
개요이번 강의에서는 Unreal Engine의 구조체(Struct)의 특징을 이해하고, 마지막 핵심 컨테이너인 TMap의 내부 구조와 활용 방법을 학습합니다. TArray, TSet, TMap 세 가지 컨테이너의 장단점을 비교하여 상황에 맞는 최적의 자료구조를 선택하는 방법을 익힙니다. 학습 목표- Unreal 구조체의 선언 방법과 특징 이해- TMap의 내부 구조 파악 및 활용 방법 학습- TArray, TSet, TMap의 장단점 비교 및 적재적소 활용- 커스텀 구조체를 해시 기반 컨테이너에서 사용하는 방법 획득 Unreal 구조체 (USTRUCT)개념 및 특징: **구조체(USTRUCT)**는 데이터를 저장하고 전송하는 데 특화된 가벼운 객체입니다. UObject vs USTRUCT 구조체 vs ..
[이득우의 언리얼] 10. 언리얼 컨테이너 라이브러리 - TArray, TSet
·
기타/[강의] 이득우의 언리얼 프로그래밍 Part1
개요이번 강의에서는 Unreal Engine이 자체 제작한 컨테이너 라이브러리(UCL - Unreal Container Library)의 대표적인 자료구조인 TArray와 TSet의 내부 구조와 활용 방법을 학습합니다. 각 컨테이너의 장단점을 파악하여 상황에 맞게 효과적으로 활용하는 방법을 익힙니다. 학습 목표- Unreal 컨테이너 라이브러리 TArrayy와 TSet의 내부 구조 이해- 두 컨테이너의 장단점 파악 및 적절한 활용 방법 학습- 디버그 빌드를 통한 메모리 구조 직접 확인- 알고리즘 라이브러리 활용 방법 습득 Unreal 컨테이너 라이브러리 vs C++ STL TArray - 동적 배열개념 및 특징: TArray는 크기를 동적으로 조절할 수 있는 가변 배열 자료구조입니다.장점- 메모리 연..
[이득우의 언리얼] 9. 언리얼 C++ 설계 - 델리게이트
·
기타/[강의] 이득우의 언리얼 프로그래밍 Part1
개요이번 강의에서는 Unreal Engine의 델리게이트(Delegate)를 사용하여 클래스 간의 느슨한 결합(Loose Coupling)을 구현하는 방법을 학습합니다. 발행-구독(Publish-Subscribe) 디자인 패턴을 통해 학사 정보 시스템과 학생 간의 알림 기능을 구현하면서 델리게이트의 실용적인 활용법을 익힙니다. 학습 목표- 느슨한 결합의 장점과 델리게이트의 역할 이해- 발행-구독 디자인 패턴의 개념과 구현 방법 학습- Unreal 델리게이트의 다양한 종류와 선언 방법 습득- 델리게이트를 활용한 이벤트 기반 시스템 구축 느슨한 결합이란 ?강한 결합 (Tight Coupling): 클래스들이 서로 직접 의존하는 관계// ❌ 강한 결합 - Person이 Card에 직접 의존class UPe..
[이득우의 언리얼] 8. 언리얼의 C++ 설계 - 컴포지션
·
기타/[강의] 이득우의 언리얼 프로그래밍 Part1
개요이번 강의에서는 Unreal Engine C++만의 독특한 컴포지션(Composition) 기법을 사용하여 복잡한 Unreal Object를 효과적으로 설계하고 생성하는 방법을 학습합니다. 학교 시스템에 출입증 카드를 추가하면서 Has-A 관계를 구현하고, Unreal Engine의 확장 열거형 타입을 활용하는 방법을 익힙니다. 학습 목표Unreal C++ 컴포지션 기법을 사용한 객체의 포함 관계 설정 방법 학습CreateDefaultSubobject와 NewObject API의 차이점 이해Unreal Engine의 확장 열거형 타입 선언 및 활용 방법 습득메타데이터를 활용한 런타임 정보 추출 방법 학습 컴포지션이란 ?1. 상속 (Inheritance) - Is-A 관계class UStudent : ..
[이득우의 언리얼] 7. 언리얼 C++ 설계 - 인터페이스
·
기타/[강의] 이득우의 언리얼 프로그래밍 Part1
개요이번 강의에서는 Unreal Engine C++에서 인터페이스를 선언하고 활용하여 보다 안정적이고 유지보수가 용이한 클래스를 설계하는 방법을 학습합니다. 학교에서 학생, 교수, 교직원이 활동하는 상황을 구현하면서 인터페이스의 실용적인 활용법을 익힙니다. 인터페이스란 ?인터페이스의 역할**인터페이스(Interface)**는 객체 지향 설계에서 클래스가 반드시 구현해야 할 행동(메서드)을 지정하는 추상 타입입니다. 주요 활용 목적다형성(Polymorphism) 구현의존성 분리(Dependency Separation)명시적인 계약(Contract) 정의유연하고 확장 가능한 설계 Unreal Engine에서의 활용 예시// Unreal Engine 내부 구조 예시class AActor { }; // 월드에..
[이득우의 언리얼] 6.언리얼 오브젝트 리플렉션 시스템 2
·
기타/[강의] 이득우의 언리얼 프로그래밍 Part1
개요이번 강의에서는 Unreal Engine의 리플렉션(Reflection) 시스템을 실제로 활용하여 Unreal Object를 다루는 방법을 학습합니다. 학교에서 학생과 교수가 수업하는 상황을 구현하면서 리플렉션의 강력한 기능들을 실습해봅니다. 클래스 설계 구조1. 상속 구조UObject └── UPerson (부모 클래스) ├── UStudent (학생 클래스) └── UTeacher (교사 클래스) 2. 클래스별 속성 및 기능UPerson (기본 인물 클래스)속성: Name (이름), Year (연차)함수: virtual void DoLesson() - 수업 참여 행동UStudent (학생 클래스)속성: ID (학번)함수: DoLesson() 오버라이드 - 수업 듣기UTea..
[이득우의 언리얼] 5. 언리얼 오브젝트 리플렉션 시스템 1
·
기타/[강의] 이득우의 언리얼 프로그래밍 Part1
프로퍼티 시스템이란? (리플렉션)**리플렉션(Reflection)**은 프로그램이 실행 시간에 자기 자신을 조사하는 기능입니다. C++는 기본적으로 리플렉션을 지원하지 않지만, 언리얼 엔진은 자체 리플렉션 시스템을 구축하여 다음과 같은 핵심 기능들을 제공합니다:에디터의 디테일 패널Serialization (저장/로드)가비지 콜렉션네트워크 리플리케이션블루프린트/C++ 커뮤니케이션 프로퍼티 시스템의 주요 기능1. 자동 프로퍼티 초기화// 예시: AEnemy 클래스UPROPERTY(EditAnywhere, Category="Stats")int32 Health = 100;// 레벨에 배치하고 Health를 500으로 설정 후 저장하면// 별도 코드 없이 자동으로 로드됨UObject는 생성자 호출 전에 자동으로 ..