개발/Unreal Engine / / 2022. 2. 9. 17:34

Learning Unreal 4 언리얼 공부일지 - 클래스에 대해 [UObject, Actor, Pawn, Controller, Character]

반응형

UObejct

언리얼에서 클래스를 생성할 경우 UObject을 상속받거나, 다른 일반 클래스를 상속받거나 할 수 있다.

UObject을 상속받을 경우 제공되는 많은 기능들이 있는데, 한 번 알아보자.

Garbage Collection

유니티를 사용해봤다면 이 단어를 들어봤을 것이다. 최근에는 java이상급의 고급 언어라면 GC가 들어있는 경우가 많은데, 본래 C++에서 메모리는 사용자가 관리하지만 UObject에서는 이 기능을 제공한다.

언리얼 코드를 작성할 때 UPROPERTY() 매크로를 사용하는 것으로 UObject를 상속받을 수 있고. 혹은 스마트 포인터와 같은 개념으로 메모리를 관리할 수 있다.

Reflection

코드를 실행하는 런타임 도중에 클래스 안의 변수나 함수등의 정보를 알고싶을 경우 사용하는 기능이다.

C++에서는 본래 reflection을 지원하지 않지만, 언리얼 엔진에서 별도로 제작하였기에, 코드를 수정하지 않고 엔진자체적으로 클래스를 수정하거나 하는 작업을 할 수 있다.

Serialization

직렬화, 백엔드 측면에서 데이터를 주고받을 때 주로 이용하는 개념이다.

코드를 실행하여 생성된 인스턴스 안에 특정 값들이 들어갔을 때, 이는 메모리에 올라가 휘발성을 가지고 있다. 따라서 직렬화하여 다른 공간에 저장하는 역할을 할 수 있다.

Automatic Editor Integration

코드가 아닌 엔진 자체적으로 블루프린트 같은 기능으로 작업을 할 수 있는 기능이다.

Type Information

C++의 dynamic_cast와 같이 RTTI (RunTime Time Information)를 이용하여 타입을 알 수 있는 방법이있다.

dynamic_cast는 부모 클래스와 부모 클래스를 상속받은 자식 클래스 간에 캐스팅을 해주는 연산자이다. 

언리얼의 경우 UObject안에 타입 정보를 관리하는 기능이 있어 Cast<>를 통해서 타입을 캐스팅할 수 있다.

Network Replication

100명 안으로 비교적 적은 인원의 클라이언트 - 서버 구조를 만들 때 유용하다. 특히 동기화의 측면에서 UObject를 상속 받음으로써 자동으로 네트워크 동기화 기능을 가능케 한다.

 

Actor

Actor를 상속 받으면 Component를 사용할 수 있게 된다. 이는 유니티에서의 Inspector를 통해 Component를 부착하는 기능과 유사하다.

Pawn, Controller

Controller를 이용해서 Pawn을 조작한다.

Character

Pawn을 상속받는 클래스로, Character Movement라는 Component를 제공한다. 이 Component를 이용해서 캡슐을 기반한 이동 기능들을 이용할 수 있다.

 

Pawn과 Controller와 같이 기능을 분리하는 것은 보통 많이 사용하는 MVC 패턴을 이해하는 것이 좋다. 주체인 Model과 주체의 역할인 View (게임의 경우 Component), 어떤 역할을 실행할 지를 Controller로 분리해서 코드를 재사용하기 쉽도록 분리한다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유