Study/UnrealEngine

UE5.0 CPP 01~02

리쥬쥬 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 키워드가 없으면 속성 편집이 불가능 -> 자식 컴포넌트 정보도 확인할 수 없음