UnrealEngine #직렬화

주찬환·2024년 12월 12일

Unreal

목록 보기
6/12
post-thumbnail

직렬화란?

특정한 형식을 통해 바이트 배열 방식으로 입출력장치(I/O)의 바이트 스트림 형태로 바꾸는 것. 게임은 pc, 모바일, 콘솔 등의 다양한 환경에서 돌아간다. 각 각의 플랫폼은 각자 다른 방식으로 구동되는데 언리얼 엔진에서는 이런 다양한 환경에 대응할 수 있는 메모리 할당과 에디터 기능을 제공하기 위해서 직렬화를 사용한다.

언리얼C++의 빌드 방식

  • 빌드 : UHT -> Unreal C++ compiler(직렬화) -> Module -> DLL
  • 패키징 : DLL -> .exe(DLL을 실행 시키는 파일)
    **DLL에는 게임을 만드는데 사용한 에셋 정보와 중간언어(IL)로 번역된 작성한 소스 코드 정보등이 들어간다.

언리얼에서 직렬화 되기 위해서는 반드시 UObject클래스를 상속 받아야한다.

직렬화 클래스(UCLASS())

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "클래스명.gnerated.h"

UCLASS()
class 프로젝트명_API 클래스명 : AActor
{
	GENERATEDBODY()
    
}
  • gnerated.h : GENERATEDBODY()를 포함하기 위한 헤더
  • UCLASS() : 직렬화 될 클래스라는 것을 명시
  • GENERATEDBODY() : 직렬화를 하기 위한 내용들은 물고 있는 메크로 함수
    **직렬화하기 위해선 반드시 위 3개 존재해야 한다.

직렬화 변수(UPROPERTY(편집수준))

UPROPERTY(변수) : 에디터에 공개될 변수들

형식 UPROPERTY(편집수준)

  • EditAnywhere : 에디터와 화면에 배치된 디테일 창에서도 다 편집할 수 있음.

  • EditDefaultsOnly : 에디터 내에서만 편집가능하고, Instance화되어 배치된 디테일 창에서는 값을 변경할 수 없다.

  • EditInstanceOnly : 에디터에서는 편집 불가능하고, 화면에 배치되어 인스턴스화가 되면 값을 변경할 수 있다.
    인스턴스화 되어 화면에 배치된 값은 에디터에서 설정한 값을 기본값으로 가지게 되고, 에디터의 기본값은 C에서 초기화한 값이 기본값이 된다.

  • VisibleAnyWhere : 편집은 불가능하고, 값을 확인할 수 있다. 주로 실시간으로 변하는 값이 맞는지 확인하기위해서 사용한다.

    (protected권장) : 블루프린트에서는 C++에서 작성한 코드를 상속받아 만들어지는 구조이기 때문에 private는 사용할 수 없음.

  • BlueprintReadWrite : 블루프린트에서 Get과 Set이 모두 가능함.

  • BlueprintReadOnly : Get만 가능함.

profile
게임 개발자가 되고 싶습니다! #Unreal #C++

0개의 댓글