이 장에서는 언리얼의 기본 적인 상속 구조에 대해서 알아보려고 한다.
언리얼의 상속 구조를 알기전 언리얼의 Type 네이밍 규칙에 대해서 설명하고 가려고 한다.Camel Notation
낙타 모양에서 따온 방법으로 첫글자를 소문자로 시작하여 두번 째 단어부터 대문자로
표현하는 방식을 말한다.
ex ) char camelNotationPascal Notation
첫 단어를 대문자로 시작하는 Camel Notation이다.
ex ) char PascalNotationSnake Notation
_(Under Bar) 를 이용하여 단어와 단어 사이에 _ 로 구분하는 표기법이다.
ex ) char Snake_NotationHungarian Notation
변수의 자료형을 접두어로 붙이는 표기법이다.
ex ) char cHungarian Case언리얼과 같은 경우 Pascal Notation 과 Hungarian Case 을 같이 사용하는 형식이다.
대표적인 ACharacter 와 같은 경우 AActor 를 상속받아 Hungarian Case 의 A 를 붙이며
Pascal 형식의 대문자로 시작하여 ACharacter 와 같은 형식으로 네이밍을 하고 있다.
Unreal Engine 의 약 6000 개의 Class 가 기반으로 가지고 있는 Class 로
Unreal 의 모든 객체의 기본 클래스라고 생각하면 된다.
UObject 를 기반으로 가진 파생 클래스들은 해당과 같은 기능들을 수행할 수 있다.
- CDO (Class Default Object)
- Reflection
- GC (Garbage Collection)
- Serialization
- Delegate
- Replication
- Editor Intergration
위의 7 가지 기능들은 나중에 따로 정리하여 서술할 예정이니
지금은 이러한 기능들을 제공하고 있다라고 생각하자.
UObject 는 Unreal 의 최상의 클래스가 아니다.
UObject 또한 UObjectBaseUtility 그 위의 기반인 UObjectBase
를 상속 받고 있으므로 오해가 생기지 않도록 하자.
World 에 배치 될 수 있는 기능을 포함한 UObject 의 파생 클래스이다.
Controller 의 입력을 받을 수 있는 AActor 의 파생 클래스이다.
UnPossessed , PossessedBy , GetController 등의 Controller 에 대한 조작을 받을 수 있으며
상호작용이 가능한 기능이 추가된 클래스이다.
CharacterMovementComponent 를 통한 물리적 이동 컴포넌트가 추가된
APawn 의 파생 클래스 로 CharacterMovementComponent 를 통하여
캐릭터의 움직임을 좀 더 간편하게 제어할 수 있는 클래스이다.
기능들을 나누어 각각의 독립적인 클래스로 분리하는 것으로
한 개체가 여러분야를 커플링 없이 다룰 수 있게 해준다는 장점이 있다.
SOLID 원칙에 따라 요구사항에 대한 대처가 해당 기능을 하고 있는
컴포넌트만 수정하면 되므로 유지보수에 유리한 기능을 가지고 있다.
Actor 에 추가할 수 있는 재사용 가능한 기능을 정의하는 기본 클래스이다.
ActorComponent 를 기반으로 파생클래스 Rendering 과 관련된 모든
Class 들의 최상위 기반 클래스입니다.