언리얼 오브젝트 리플렉션 시스템
- 언리얼 오브젝트의 특징과 리플렉션 시스템의 이해
- 언리얼 오브젝트의 처리 방식의 이해
리플렉션(프로퍼티 시스템)
- 프로그램이 실행시간에 자기 자신을 조사하는 기능.
- 파일 상단에 특수한 include 를 추가해 주면 리플렉션이 있는 유형을 이 파일을 고려해야 함을, UHT 에 알려준다.
UPROPERTY()
- 관리되는 클래스 멤버 변수.
- UPROPERTY() 와 아닌 것을 같은 클래스에 섞어도 된다만, 아닌 것은 언리얼 엔진에 보이지 않는 다는 점만 주의.
- UPROPERTY()라고 반드시 선언을 해줘야지 언리얼 엔진이 이런한 메모리 포인터에 대해서 자동으로 메모리를 관리해 준다.
UFUNCTION()
NewObject()
- 다양한 기능을 제공하는 언리얼 오브젝트는 NewObject API를 사용해 생성해야 함.
언리얼 오브젝트 클래스의 기본 오브젝트
- 언리얼 클래스 정보에는 클래스 기본 오브젝트(CDO)가 함께 포함되어 있음.
- CDO: 언리얼 객체가 가진 기본 값을 보관하는 템플릿 객체. UClass 및 CDO는 엔진 초기화 과정에서 생성되므로 콘텐츠 제작에서 안심하고 사용할 수 있음.
- 한 클래스로부터 다수의 물체를 생성해 게임 콘텐츠에 배치할 때 일관성 있게 기본 값을 조정하는데 유용하게 사용됨.
- GetDefaultObject 함수를 통해 CDO를 얻을 수 있음.
check()
- 중요한 부분에서 계속 검증을 하고 넘어가는 걸 권장.
ensure()
- 에디터를 끄지 않고서도 문제점을 확인할 수가 있음.
정리
- 언리얼 오브젝트에는 항상 클래스 정보를 담은 UClass 객체가 매칭되어 있다.
- UClass:
- 언리얼 오브젝트의 정보를 파악할 수 있음.
- 클래스 기본 오브젝트(CDO)가 연결되어 있어 개발의 생산성 향상.
- 클래스 정보와 CDO는 엔진 초기화 과정에서 생성되므로 게임 개발에서 안전하게 사용 가능.
- 헤더 정보를 변경하거나 생성자 정보를 변경하면 에디터를 끄고 컴파일하는 것이 안정적임.