저번 포스트에서는 언리얼은 성능과 안정성이라는 두 마리 토끼를 모두 잡기 위해
언리얼 엔진만의 독특한 구조를 지니고 있다고 말씀드렸습니다.
그리고 그 독특한 구조는 언리얼 오브젝트로 설명할 수 있습니다.
1) 언리얼 오브젝트란?
언리얼 오브젝트는 언리얼 엔진이 설계한 새로운 시스템의 단위 오브젝트를 말합니다.
특징은 다음과 같습니다.
- 기존 C++ 오브젝트에 모던 객체 지향 설계를 위한 다양한 기능의 추가
- 일반적인 C++ 오브젝트와 언리얼 오브젝트의 두 객체를 모두 사용가능
- 일반 C++ 오브젝트와 구분하고자 독특한 접두사를 사용
특이한 접두사의 사용은 언리얼 엔진을 다루면서 매우 많이 볼 수 있는데,
예시를 들자면 다음과 같습니다.
일반적인 C++ 오브젝트는 F를, 언리얼 오브젝트는 U를 사용하고
그 외에도 템플릿에는 T를 불리안 변수에는 접두사 b를 수식하는 경우가 많습니다.
이런 접두사를 통해 우리는 해당 오브젝트가 무엇인지 빠르게 유추할 수 있습니다.
2) 오브젝트 별 사용용도
일반적인 C++ 오브젝트는 저수준의 빠른 처리를 위해 기능 구현에 사용됩니다.
대표적으로 간단한 함수나 단순한 변수에 사용됩니다.
이와 반대로 언리얼 오브젝트는 콘텐츠 제작에 관련된 복잡한 설계를 구현하는데 사용됩니다.
대표적으로 클래스를 생각하시면 될 것 같습니다.
3) 언리얼 오브젝트의 특징
언리얼 오브젝트를 사용하는 이유, 즉 언리얼 오브젝트의 특징은 다음과 같이 설명드릴 수 있습니다.
첫 번째로, 클래스 기본객체(Class Default Object)입니다.
생성자에서 만들어지는 인스턴스를 CDO라고 하며 클래스의 기본값과 타입을 제공합니다.
두 번째로, 리플렉션입니다.
런타임 시점에서 클래스의 정보를 참조할 수 있게 해줍니다.
이는 매우 유용한 기능이며 언리얼 엔진의 장점의 근간을 이루게 됩니다.
세 번째로, 인터페이스입니다.
인터페이스는 C++에는 존재하지 않지만, C#이나 자바에는 등장하는 개념인데
해당 인터페이스를 구현한 객체들에 대한 동일한 사용방법과 동작을 보장하기 위해 사용하는 개념이라고 보시면 됩니다.
특이한 것은 언리얼의 인터페이스에서는 선언 말고도 구현이 가능하다는 것입니다.
이는 인터페이스를 클래스로도 활용할 수 있게 해줍니다.
네 번째로, 향상된 열거형과 향상된 구조체입니다.
이들은 열거형과 구조체이지만, 리플렉션이 가능하여 언리얼 엔진에서 이들을 조사 및 조작할 수 있게 해줍니다.
다섯 번째로, 델리게이트(Delegate)입니다.
델리게이트 기능을 사용해 클래스 간의 느슨한 결합 구조를 만들어주고
이는 곧 클래스의 안정적인 구현을 이끌어낼 수 있게 해줍니다.
여섯 번째로, 가비지 컬렉터입니다.
자동으로 메모리를 관리하는 요소로, 사용되지 않는 오브젝트를 자동으로 감지해 메모리를 회수하는 시스템입니다.
마지막으로 직렬화입니다.
직렬화를 통해 데이터를 압축 + 암호화하여 효율적이고 안전하게 데이터를 보관할 수 있게 됩니다.
위와 같은 언리얼 오브젝트의 특징은 언리얼 엔진이 기능과 안정성을 모두 잡을 수 있게 해주는 원동력이 됩니다.
다음 포스팅에서는 간단한 언리얼 오브젝트를 생성해보고 코드를 실행시켜 결과를 알아보겠습니다.
'언리얼 > 언리얼 C++' 카테고리의 다른 글
언리얼 C++ - 언리얼 리플렉션 시스템의 활용 (0) | 2024.06.30 |
---|---|
언리얼 C++ - 언리얼 오브젝트 리플렉션 시스템 ~ CDO (0) | 2024.06.24 |
언리얼 C++ - 언리얼의 문자열 (0) | 2024.06.24 |
언리얼 C++ - 간단한 언리얼 오브젝트 클래스 생성 (0) | 2024.06.17 |
언리얼 C++에 대해 배워보자! - 들어가기에 앞서 (0) | 2024.06.03 |