언리얼/언리얼 C++

언리얼 C++에 대해 배워보자! - 언리얼 오브젝트

monstro 2024. 6. 17. 01:25
728x90
반응형

저번 포스트에서는 언리얼은 성능과 안정성이라는 두 마리 토끼를 모두 잡기 위해

언리얼 엔진만의 독특한 구조를 지니고 있다고 말씀드렸습니다.

 

그리고 그 독특한 구조는 언리얼 오브젝트로 설명할 수 있습니다.

 

1) 언리얼 오브젝트란?

언리얼 오브젝트는 언리얼 엔진이 설계한 새로운 시스템의 단위 오브젝트를 말합니다.

특징은 다음과 같습니다.

  • 기존 C++ 오브젝트에 모던 객체 지향 설계를 위한 다양한 기능의 추가
  • 일반적인 C++ 오브젝트와 언리얼 오브젝트의 두 객체를 모두 사용가능
  • 일반 C++ 오브젝트와 구분하고자 독특한 접두사를 사용

특이한 접두사의 사용은 언리얼 엔진을 다루면서 매우 많이 볼 수 있는데, 

예시를 들자면 다음과 같습니다.

 

일반적인 C++ 오브젝트는 F를, 언리얼 오브젝트는 U를 사용하고

그 외에도 템플릿에는 T를 불리안 변수에는 접두사 b를 수식하는 경우가 많습니다.

 

이런 접두사를 통해 우리는 해당 오브젝트가 무엇인지 빠르게 유추할 수 있습니다.

 

2) 오브젝트 별 사용용도

일반적인 C++ 오브젝트는 저수준의 빠른 처리를 위해 기능 구현에 사용됩니다.

대표적으로 간단한 함수나 단순한 변수에 사용됩니다.

 

 이와 반대로 언리얼 오브젝트는 콘텐츠 제작에 관련된 복잡한 설계를 구현하는데 사용됩니다.

대표적으로 클래스를 생각하시면 될 것 같습니다.

 

3) 언리얼 오브젝트의 특징

언리얼 오브젝트를 사용하는 이유, 즉 언리얼 오브젝트의 특징은 다음과 같이 설명드릴 수 있습니다.

 

첫 번째로, 클래스 기본객체(Class Default Object)입니다.

생성자에서 만들어지는 인스턴스를 CDO라고 하며 클래스의 기본값과 타입을 제공합니다.

 

두 번째로, 리플렉션입니다.

런타임 시점에서 클래스의 정보를 참조할 수 있게 해줍니다.

이는 매우 유용한 기능이며 언리얼 엔진의 장점의 근간을 이루게 됩니다.

 

세 번째로, 인터페이스입니다.

인터페이스는 C++에는 존재하지 않지만, C#이나 자바에는 등장하는 개념인데 

해당 인터페이스를 구현한 객체들에 대한 동일한 사용방법과 동작을 보장하기 위해 사용하는 개념이라고 보시면 됩니다.

특이한 것은 언리얼의 인터페이스에서는 선언 말고도 구현이 가능하다는 것입니다.

이는 인터페이스를 클래스로도 활용할 수 있게 해줍니다.

 

네 번째로, 향상된 열거형과 향상된 구조체입니다.

이들은 열거형과 구조체이지만, 리플렉션이 가능하여 언리얼 엔진에서 이들을 조사 및 조작할 수 있게 해줍니다.

 

다섯 번째로, 델리게이트(Delegate)입니다.

델리게이트 기능을 사용해 클래스 간의 느슨한 결합 구조를 만들어주고 

이는 곧 클래스의 안정적인 구현을 이끌어낼 수 있게 해줍니다.

 

여섯 번째로, 가비지 컬렉터입니다.

자동으로 메모리를 관리하는 요소로, 사용되지 않는  오브젝트를 자동으로 감지해 메모리를 회수하는 시스템입니다.

 

마지막으로 직렬화입니다.

직렬화를 통해 데이터를 압축 + 암호화하여 효율적이고 안전하게 데이터를 보관할 수 있게 됩니다.

 

위와 같은 언리얼 오브젝트의 특징은 언리얼 엔진이 기능과 안정성을 모두 잡을 수 있게 해주는 원동력이 됩니다.

다음 포스팅에서는 간단한 언리얼 오브젝트를 생성해보고 코드를 실행시켜 결과를 알아보겠습니다.

728x90
반응형