• UObject
  • Actor
  • Pawn
  • Controller
  • Character

 

UObject 클래스 상속 vs 일반 C++ 클래스 사용

 

UObject 클래스가 제공하는 기능들

 

  • Garbage Collection : 기본적으로 C++에서 메모리 관리는 프로그래머의 책임이다.
    UObject를 상속받은 경우 UPROPERTY 매크로를 사용하고 상속받지 않은 경우는 스마트 포인터로 관리한다.
  • Reference Updating
  • Reflection : 런타임에 어떤 클래스의 정보를 알고 싶다면? -> C++에는 Reflection이 없어서 못한다.
    다만 언리얼 엔진에서는 억지로 만들었다.
  • Serialization (직렬화) : *별첨
  • Automatic Updating of Default Property Changes
  • Automatic Property Initialization
  • Automatic Editor Integration
  • Type Information Available at Runtime : C++에서의 RTTI는 dynamic_cast가 있다.
    언리얼에서는 UObject를 상속 시, 타입 정보 관리가 추가되어서 Cast<>를 사용할 수 있다.
  • Network Replication : Client/Server 구조의 100명 이하의 게임을 만들 때 (특히 FPS) 유용하다.
    온라인 게임에서는 동기화가 가장 큰 이슈이다. 하지만 UObject를 상속 받으면 Replication을 지원한다.
    참고로 MMORPG를 만든다면 개념이 완전히 달라져서 Replication을 쓸 수 없다. 그때는 별도의 서버를 사용해야 한다.

 

Serialization (직렬화)

 

메모리를 디스크에 저장하고나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것. (일종의 파싱)

참조 형식 데이터는 사용할 수 없고 값 형식 데이터만 사용할 수 있다.

참조 형식 데이터는 실제 데이터가 아닌 메모리 번지 주소를 가지고 있기 때문이다.

 

Actor

 

Actor를 상속 받으면 SRT(Scale, Rotation, Translation)좌표가 생기는것은 아니다.

SRT좌표는 씬 컴포넌트가 담당한다.

 

Actor를 상속받으면 컴포넌트를 붙일 수 있다는 것이 가장 중요한 특징이다.

Unity에서 GameObject를 만들어서 컴포넌트를 조립하는 것과 비슷하다.

 

Pawn

 

병졸..?

 

 

Controller

 

영혼이라고 보면 된다.

 

Character

 

캐릭터는 폰을 상속받는다.

Character Movement라는 컴포넌트를 제공한다. 캡슐 기반의 간단한 이동이 가능하지만 꼭 사용할 필요는 없다.

참고로 UE3에서는 폰만 있다.

 

Pawn과 Controller를 따로 분리한 이유

 

행동이라는 개념을 별도의 Controller로 관리하면 코드 재사용성이 증가한다.

Behavior Tree 등 언리얼에서 제공하는 AI 기능을 이용할 수 있다.

통상적으로 말하는 MVC 개념과도 비슷하다. (Model: Pawn, View: Component, Controller: Controller)

'언리얼 엔진 > 언리얼 엔진4 입문' 카테고리의 다른 글

[UE4 입문] UMG 실습  (0) 2022.09.12
[UE4 입문] 언리얼 컨테이너  (0) 2022.09.12
[UE4 입문] 샘플 분석  (0) 2022.09.12
[UE4 입문] Behavior Tree #2  (0) 2022.09.12
[UE4 입문] Behavior Tree #1  (0) 2022.09.12

+ Recent posts