[UE5] 이득우 Part 1. 6강 언리얼 리플렉션 시스템 Ⅱ

공부 스파이럴·2023년 12월 8일
0

실습 예제

  • Person 부모 클래스
    • Name, Year 정보
  • Student, Teacher 자식 클래스
    • Id(학번), Id(사번) 정보
  • DoLesson 가상 함수
    • Student는 수업 듣기
    • Teacher는 수업 가르치기

  • generated.h 파일을 가장 밑에 include 하는 것이 원칙
  • cpp 파일 include 순서도 해당 언리얼 오브젝트에 선언된 헤더가 가장 위쪽에 위치

  • 클래스명::StaticClass()
  • 객체->GetClass()
    • 둘 다 동일한 UClass 가져옴

  • FindPropertyByName
    • 해당 클래스의 UClass로부터 FProperty를 찾아옴
    • 없으면 nullptr 반환
  • GetValue_InContainer
    • (void const* InContainer, void* OutValue)
    • 해당 Property로부터 입력된 객체가 가지고 있는 해당 값을 가져옴
  • SetValue_InContainer
    • (void OutContainer, const void InValue)
    • 해당 Property로부터 해당 객체에 값을 입력함

  • FindFunctionByName
    • 해당 클래스의 UClass로부터 UFunction을 찾아옴
    • 없으면 nullptr 반환
  • ProcessEvent
    • 객체로부터 UFunction을 입력해 함수를 호출

마무리

  • 리플렉션 시스템을 사용해 언리얼 오브젝트의 특정 속성과 함수를 이름으로 검색할 수 있음
  • 리플렉션 시스템을 사용해 접근 지시자와 무관하게 값을 설정할 수 있음
  • 리플렉션 시스템을 사용해 언리얼 오브젝트의 함수를 호출할 수 있음

접근 지시자와 리플렉션 시스템에 관한 질문

https://www.inflearn.com/questions/1018748/%EC%A0%91%EA%B7%BC%EC%A7%80%EC%8B%9C%EC%9E%90%EC%99%80-%EB%A6%AC%ED%94%8C%EB%A0%89%EC%85%98-%EC%8B%9C%EC%8A%A4%ED%85%9C

  • 한정 접근 지시자 규칙이 뚫림
    • 모든 개발자가 프로그래머는 아니기 때문에 생산성의 문제
    • C++보다 블루프린트 시스템에 유용
  • Find는 O(n)이 디폴트
    • 하나의 객체에 그렇게 많은 속성이 있지 않아서 그런 듯
    • 언리얼은 자유로운 엔진이기 때문에 필요하다면 직접 구현해서 사용하면 됨

0개의 댓글