본문 바로가기

Unreal

UE C++ 오브젝트


이득우의 언리얼 프로그래밍 - 언리얼 C++의 이해를 듣고 정리한 글입니다.

 

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해 | 이득우 - 인프런

이득우 | 대기업 현업자들이 수강하는 언리얼 C++ 프로그래밍 전문 과정입니다. 언리얼 엔진 프로그래머라면 게임 개발전에 반드시 알아야 하는 언리얼 C++ 기초에 대해 알려드립니다., [사진] 언

www.inflearn.com

 


C++ 언어의 단점과 후속 언어의 등장

  • 1970년대에 개발된 C++ 언어입니다.
    • 객체지향 프로그래밍 선두 주자.
    • 지속적 개선해왔지만, 익혀야 할 내용이 많아 초급자가 학습하기 어려움.
    • 하드웨어에 직접 접근하기 때문에, 잘못 사용 시 프로그램에 영향도가 큼.
  • 1990년 중반이후 C++의 단점을 보완한 후속 언어의 등장 (Java, C#)
    • C++의 불필요한 기능을 걷어내고, 최대한 명확하고, 간결하게 설계.
    • 성능보다 안정성과 생산성을 중시
    • 하드웨어에 직접 접근하지 않고, 가상 머신을 통해 간접적으로 접근.

언리얼 엔진의 선택

  • 성능을 위해 기존 C++ 언어를 포기할 수 없었음.
  • 기존 C++ 언어를 확장해 모던 객체 지향 설계를 가능하도록 만듦.
  • 모던 객체 지향 설계를 위한 새로운 시스템을 구축.
  • 이 때 UObject는 UE에서 객체 지향 시스템의 기본 클래스가 됩니다.


언리얼 오브젝트란

  • 언리얼 엔진이 설계한 새로운 시스템 단위 오브젝트(객체)
    • 기존 C++ 오브젝트에 모던 객체 지향 설계를 위한 다양한 기능을 추가한 오브젝트
    • 일반 C++ 오브젝트와 언리얼 오브젝트의 두 객체를 모두 사용할 수 있음.
    • 구분을 위해 일반 C++ 오브젝트는 F, 언리얼 오브젝트는 접두사 U를 사용
  • 각 오브젝트의 사용 용도
    • C++ 오브젝트 : 저수준의 빠른 처리를 위한 기능 구현에 사용
    • 언리얼 오브젝트 : 콘텐츠 제작에 관련된 복잡한 설계 구현에 사용.

언리얼 오브젝트의 특징

  • 클래스 기본 객체(CDO) : 클래스의 기본 값과 타입 정보 제공
  • 리플렉션(Reflection) : 런타임에서 클래스 정보의 참조 기능
  • 인터페이스(Interface) : 모던 객체 지향 언어가 제공하는 인터페이스 제공
  • 향상된 열거형 : 보다 향상된 열거형의 지원
  • 델리게이트(Deligate) : 객체간의 결합을 낮출 수 있는 델리게이트 기능 제공
  • 가비지컬렉션(Garbage Collection) : 자동 메모리 관리
  • 향상된 구조체(Struct) : 리플렉션이 가능한 구조체 지원
  • 직렬화(Serialization) : 객체 정보를 바이트 스트림으로 저장, 전송, 불러들이는 기능


UObject 에 제공되는 함수성

  • 가비지 컬렉션
  • 레퍼런스 업데이트
  • 리플렉션
  • 시리얼라이제이션
  • 디폴트 프로퍼티 변경사항 자동 업데이트
  • 자동 프로퍼티 초기화
  • 자동 에디터 통합
  • 실행시간에 유형 정보 사용가능
  • 네트워크 리플리케이션

 

언리얼 헤더 툴

UObject 파생 유형에 제공되는 함수성을 활용하기 위해서는,
해당 유형에 대해 헤더 파일에서 전처리 단계를 거쳐 줘야 필요한 정보를 수집할 수 있습니다.
이러한 전처리 단계는 Unreal Header Tool (언리얼 헤더 툴) 에서 이루어집니다

 

 

 

참고

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/objects-in-unreal-engine?application_version=5.1

 

언리얼 엔진의 오브젝트

기본적인 게임플레이 요소인 액터와 오브젝트에 대한 설명입니다.

dev.epicgames.com

 

요약

  • 게임 프로그래밍 에서는 단일 컴퓨터에서 퍼포먼스를 뽑기 위해 속도가 중요하고, 게임 규모가 커질 수록 안정성도 중요해집니다.
  • UE에서는 객체 지향 설계를 참조해서 언리얼 C++를 구성합니다.
  • UE Object는 UE에서 새로 설계한 시스템 단위 오브젝트인데, 대규모 게임 제작을 안정적으로 설계하고 구현가능합니다.
  • UE Object의 특징에는 CDO, Reflection, Interface, 향상된 Enum 타입, Delegate, Garbage Collection, Struct, Serialization 등이 있습니다.
  • UTH의 기능 : 헤더로 선언된 것과 매크로들을 참조해서 언리얼 오브젝트에 관련된 헤더 파일을 자동으로 생성해줍니다.

'Unreal' 카테고리의 다른 글

UE 액터 컴포넌트  (1) 2024.06.08
UE C++ 빌드 시스템  (0) 2024.06.01
UE C++ 직렬화  (0) 2024.05.25
UE C++ 메모리 관리  (0) 2024.05.19
UE C++ Design - Interface  (0) 2024.04.27