728x90
반응형
강의 개요
- 목표: 언리얼 오브젝트 리플렉션 시스템을 활용한 언리얼 오브젝트 관리 방법 학습
- 실습 예제: 학교에서 학생과 교수가 함께 수업하는 상황 구현
1. 클래스 설계
(1) 기본 클래스 구조
- Person 클래스 (부모)
- 속성: Name (FString), Year (int)
- 함수:
- doLesson() (가상 함수, 수업 참여 기능)
- getName(), setName() (getter, setter)
- 언리얼 리플렉션 시스템을 사용하기 위해 UProperty, UFunction 매크로 적용
- Student 클래스 (자식)
- 상속: Person
- 추가 속성: ID (int, 학번)
- doLesson() 오버라이딩 → 수업 듣는 기능
- 기본값 설정:
- 이름: "학생"
- 학번: 1
- 연차: 1년차
- Teacher 클래스 (자식)
- 상속: Person
- 추가 속성: ID (int, 사번)
- doLesson() 오버라이딩 → 수업 가르치는 기능
- 기본값 설정:
- 이름: "이선생"
- 사번: 1
- 연차: 3년차
2. 클래스 구현
- Person 클래스 생성
- FString Name, int Year 속성 선언 (Protected)
- UProperty 매크로 적용
- doLesson() 함수 선언 (UFunction 매크로 적용)
- 생성자에서 기본값 설정: 이름="홍길동", 연차=1
- Student 클래스 생성
- Person.h 포함 (generated.h 아래에 위치해야 함)
- doLesson() 함수 오버라이딩 (super::doLesson() 호출 후 학생 로그 출력)
- 생성자에서 기본값 설정
- Teacher 클래스 생성
- Person.h 포함 및 상속
- doLesson() 함수 오버라이딩 (super::doLesson() 호출 후 선생님 로그 출력)
- 생성자에서 기본값 설정
3. 오브젝트 생성 및 활용
- 객체 생성
- NewObject<UStudent>(), NewObject<UTeacher>() 사용 (C++ new 대신 사용)
- Getter/Setter 활용
- setName(), getName()을 사용해 student의 이름을 변경 후 출력
- 리플렉션 시스템 활용
- FindPropertyByName()을 사용해 Teacher 객체의 Name 속성 가져오기
- getValueInContainer()로 현재 Teacher 이름 조회
- setValueInContainer()로 Teacher 이름 변경
- 변경된 값이 정상적으로 반영되는지 확인 (getter 활용)
4. 마무리하며
- 리플렉션 시스템을 사용해 언리얼 오브젝트의 특정 속성과 함수를 이름으로 검색할 수 있다.
- 리플렉션 시스템을 사용해 접근 지시자와 무관하게 값을 설정할 수 있다.
- 리플렉션 시스템을 사용해 언리얼 오브젝트의 함수를 호출할 수 있다.
언리얼 엔진의 기본 프레임웍은 리플렉션을 활용해 구축되어 있으므로
엔진을 이해하기 위해서는 리플렉션 시스템을 이해하는 것이 필요하다.
728x90
반응형
'스터디' 카테고리의 다른 글
이득우의 언리얼 프로그래밍 스터디 기록 - 4회차 : Unreal Object Reflection System (0) | 2025.02.19 |
---|---|
이득우의 언리얼 프로그래밍 스터디 기록 - 3회차 : Unreal Object (0) | 2025.02.11 |
이득우의 언리얼 프로그래밍 스터디 기록 - 2회차 : 언리얼 C++ 기본 타입과 문자열 (0) | 2025.02.10 |
이득우의 언리얼 프로그래밍 스터디 기록 - 1회차 : 개발 환경 세팅, 언리얼 C++ 코딩 표준의 이해 (0) | 2025.02.05 |
[특강] 전투 기획 - 싸움의 기술 (0) | 2024.10.05 |