-
UE5.0 CPP 01~02Study/UnrealEngine 2022. 12. 14. 20:44
- 빌드 구성
DebugGame : 최적화 X + 디버깅
Development : 중간 수준 최적화 + 디버깅
Shipping : 배포를 위한 최적화
~ Editor : Editor 용 DLL 파일 생성
> Development Editor 설정 기본값 - CoreMinimal.h | EngineMinimal.h
CoreMinimal : UE Object가 동작할 수 있는 최소 기능만 선언
EngineMinimal : 다양한 엔진 기능 클래스 선언 - generated.h
Unreal header tool 에 의해 생성되는 파일
Unreal header tool : 클래스 선언을 분석하고 runtime에 필요한 부가 정보를 파일로 생성 - UPROPERTY()
언리얼 객체 지정 매크로
> UE 은 runtime 에 더 이상 사용하지 않는 객체를 수거함 : Garbage Collection
> 언리얼 오브젝트로 지정하여 자동 메모리 관리
> VisibleAnywhere : 속성 편집 가능
> EditAnywhere : 속성의 데이터 변경 가능
> Category ="text" : 지정한 카테고리에서 속성 값 관리 - "text" 카테고리 생성 - UCLASS() : 언리얼 오브젝트 클래스
> GENERATED_BODY() : 언리얼 오브젝트 클래스 내부에 선언 - ModulName_API class ~
다른 모듈에서 해당 객체에 접근 가능하게 하는 키워드
Windows 에서의 _declspec(dllexport) 와 동일한 키워드 - CreateDefaultSubobject(FName SubobjectName)
컴포넌트 생성 함수
SubobjectName : 컴포넌트를 구분하기 위한 Hash 값 생성에 사용될 문자열, 중복되지 않는 유일한 값을 지정해야 함
TEXT("string") : 2바이트 문자열 체계를 유지시키기 위해 사용되는 매크로 - Hot Reload
언리얼 에디터 실행 중에 사용 중인 모듈을 컴파일 하면, 에디터가 감지하고 기존 모듈을 내리고, 새 모듈로 변경
기존 모듈 덮어쓰기 X, 기존 모듈 뒤에 넘버링한 파일 생성 - Live Coding
엔진 실행 중에 C++ 코드 리빌드 후 바이너리 패치
- 언리얼 에디터에서 애플리케이션 편집.
- PIE(Play In Editor)로 애플리케이션을 실행합니다.
- 디버깅을 위해 편집기에 연결된 애플리케이션의 패키징된 데스크톱 빌드를 실행합니다.
- UE5 부터 기본적으로 Live Coding 활성화 : 에디터에서 ctrl + alt + f11 로 리빌드
https://docs.unrealengine.com/5.0/en-US/using-live-coding-to-recompile-unreal-engine-applications-at-runtime/
Live Coding
Recompile and patch your game's binaries at runtime.
docs.unrealengine.com
- 객체 이름에 F 접두사가 붙으면 언리얼 오브젝트와 관련 없는 C++ 객체(클래스|구조체)
- ConstructorHelpers::FObjectFinder<component_type> value(TEXT("uasset_path"));
C++ 코드에서 애셋 로드
> UStaticMeshComponent->SetStaticMesh(value.Object);
> UParticleSystemComponent->SetTemplate(value.Object);
uasset_path : object_type'folder_name/file_name.asset_name
Error log
- error MSB3073 : 프로젝트 경로에 공백이 있는 경우 발생할 수 있음
- UnrealBuildTool : error : Unable to build while Live Coding is active. Exit the editor and game, or press Ctrl+Alt+F11 if iterating on code in the editor or game
- UPROPERTY(VisibleAnywhere) : VisibleAnywhere 키워드가 없으면 속성 편집이 불가능 -> 자식 컴포넌트 정보도 확인할 수 없음
'Study > UnrealEngine' 카테고리의 다른 글
UE5.0 CPP 03~04 (0) 2023.03.15 UE5 Summary 01 (0) 2023.03.14 UE4 Light (0) 2017.08.01 UE 기본 용어 Memo (0) 2017.08.01 UE4 4.16 Class/Struct/Macro Add (0) 2017.07.31 - 빌드 구성