언리얼 오브젝트 리플렉션 시스템(1)

myeongrangcoding·2023년 12월 1일

언리얼 오브젝트 리플렉션 시스템

  • 언리얼 오브젝트의 특징과 리플렉션 시스템의 이해
  • 언리얼 오브젝트의 처리 방식의 이해

리플렉션(프로퍼티 시스템)

  • 프로그램이 실행시간에 자기 자신을 조사하는 기능.
  • 파일 상단에 특수한 include 를 추가해 주면 리플렉션이 있는 유형을 이 파일을 고려해야 함을, UHT 에 알려준다.

UPROPERTY()

  • 관리되는 클래스 멤버 변수.
  • UPROPERTY() 와 아닌 것을 같은 클래스에 섞어도 된다만, 아닌 것은 언리얼 엔진에 보이지 않는 다는 점만 주의.
    • UPROPERTY()라고 반드시 선언을 해줘야지 언리얼 엔진이 이런한 메모리 포인터에 대해서 자동으로 메모리를 관리해 준다.

UFUNCTION()

  • 관리되는 클래스 멤버 함수.

NewObject()

  • 다양한 기능을 제공하는 언리얼 오브젝트는 NewObject API를 사용해 생성해야 함.

언리얼 오브젝트 클래스의 기본 오브젝트

  • 언리얼 클래스 정보에는 클래스 기본 오브젝트(CDO)가 함께 포함되어 있음.
  • CDO: 언리얼 객체가 가진 기본 값을 보관하는 템플릿 객체. UClass 및 CDO는 엔진 초기화 과정에서 생성되므로 콘텐츠 제작에서 안심하고 사용할 수 있음.
  • 한 클래스로부터 다수의 물체를 생성해 게임 콘텐츠에 배치할 때 일관성 있게 기본 값을 조정하는데 유용하게 사용됨.
  • GetDefaultObject 함수를 통해 CDO를 얻을 수 있음.

check()

  • 중요한 부분에서 계속 검증을 하고 넘어가는 걸 권장.

ensure()

  • 에디터를 끄지 않고서도 문제점을 확인할 수가 있음.

정리

  • 언리얼 오브젝트에는 항상 클래스 정보를 담은 UClass 객체가 매칭되어 있다.
  • UClass:
    • 언리얼 오브젝트의 정보를 파악할 수 있음.
    • 클래스 기본 오브젝트(CDO)가 연결되어 있어 개발의 생산성 향상.
  • 클래스 정보와 CDO는 엔진 초기화 과정에서 생성되므로 게임 개발에서 안전하게 사용 가능.
  • 헤더 정보를 변경하거나 생성자 정보를 변경하면 에디터를 끄고 컴파일하는 것이 안정적임.
profile
명랑코딩!

0개의 댓글