Unreal 이론에 해당하는 글 18

언리얼 오브젝트 개념

Unreal 이론|2024. 8. 3. 18:35

[이득우의 언리얼 프로그래밍 수업의 정리]

 

모던 객체 지향 설계 원칙

 

유지보수, 유연함, 확장성 향상을 위한 객체 지향 프로그래밍 원칙 - SOLID

Single responsibility principle : 하나의 클래스는 하나의 책임만을 가져야 함

Open/closed principle : 클래스 설계를 변경하지 않고 동작을 확장할 수 있어야 함

Liskov substitution principle : 자식 클래스는 부모 클래스를 대체 사용할 수 있어야 함

Interface segregation principle : 작고 명확한 인터페이스들로 분리해 관리해야 함

Dependency inversion principle : 구현을 배제시킨 상위 정책을 바라보며 설계해야 함

 

게임 규모의 대형화로 모던 객체 지향 설계 도입이 필요해짐

-> C++언어를 매크로를 이용해 확장, 모던 객체 지향 설계 가능하도록 함

 

언리얼 오브젝트

- 새로운 언리얼 엔진만의 객체 규약

- c++ 오브젝트엔 F, 언리얼 오브젝트엔 U 라는 접두사 사용.

UObject 라는 베이스 클래스에서 상속받아 언리얼 오브젝트 구현, UCLASS 매크로를 사용하여 태그하면 UObject 처리 시스템에서 인식.

 

언리얼 오브젝트의 특징

- 클래스 기본 객체(CDO) : 클래스의 기본 값과 타입 정보의 제공

- 리플렉션 : 런타임에서 클래스 정보의 참조 기능

- 인터페이스 : 모던 객체 지향의 언어가 제공하는 인터페이스 제공

- 향상된 열거형

- 델리게이트 : 객체간의 결합을 낮출 수 있는 델리게이트 기능 제공 (나는 C#에서 쓰려다가 이해못해서 안쓴 기능이었다..)

- 가비지컬렉션 : 자동 메모리 관리

- 향상된 구조체 : 리플렉션 가능한 구조체 지원

- 직렬화(Serialization) : 객체 정보를 바이트 스트림으로 저장, 전송, 불러들이는 기능

 

언리얼 오브젝트는 지정된 매크로를 사용해 빌드를 수행하면, 추가 코드가 자동으로 만들어지는 구조를 가짐(UHT)

-> 대규모 게임제작 안정적으로 설계 및 구현 가능

'Unreal 이론' 카테고리의 다른 글

언리얼 델리게이트  (0) 2024.08.14
언리얼 컴포지션  (0) 2024.08.13
언리얼 인터페이스  (0) 2024.08.08
언리얼 프로퍼티 시스템(리플렉션)  (0) 2024.08.04
C2338 - 매크로 관련 에러  (0) 2024.08.02

댓글()

C2338 - 매크로 관련 에러

Unreal 이론|2024. 8. 2. 22:31

c2338 - static_assert failed formatting string must be a const TCHAR array

나는 UE_LOG 매크로를 사용하며 위의 에러를 경험했다.

 

UE5.1 버전에서는 UE_LOG 매크로의 정의가 달라 TCHAR변수를 그냥 넘겨도 에러가 안떳지만, 5.2버전 이후부터는 함수 내부에서만 변수 수정이 가능하도록 const static으로 TCHAR변수를 선언해줘야 사용 가능.

 

또한 UE_LOG 사용을 지양하고 GEngine->AddOnScreenDebugMessage 방식을 사용하도록 권장한다.

 

5.3에서는 세가지 방식을 사용.

 

1) TEXT 매크로

UE_LOG(LogTemp, Log, TEXT("Log Message"));

 

2) FString 객체 사용

FString LogString = TEXT("Log Message");

UE_LOG(LogTemp, Log, LogString);

 

3) 권장 - GEngine 사용

FString LogString = TEXT("Log Message");

 

GEngine->AddOnScreenDebugMessage(

                  0, // Unique message ID (optional)

                  5.0f, // Message duration in seconds

                  FColor::Red, // Message color

                  LogString, // Message text

);

'Unreal 이론' 카테고리의 다른 글

언리얼 델리게이트  (0) 2024.08.14
언리얼 컴포지션  (0) 2024.08.13
언리얼 인터페이스  (0) 2024.08.08
언리얼 프로퍼티 시스템(리플렉션)  (0) 2024.08.04
언리얼 오브젝트 개념  (0) 2024.08.03

댓글()