오늘 배운 것
- 리플렉션 시스템 이해하기
- Blueprint: 언리얼 엔진의 시각적 스크립팅 도구로, 빠른 프로토타이핑과 직관적인 로직 작성이 가능하지만, 복잡한 그래프는 유지보수에 어려움이 있음.
- C++: 복잡하고 성능이 중요한 로직에 적합하며, 메모리와 로직을 정교하게 다룰 수 있음. 하지만 코드 수정 후 재컴파일이 필요해 반복 작업이 번거로울 수 있음.
- Blueprint와 C++를 함께 사용하면, 빠른 개발 속도와 높은 성능을 모두 확보할 수 있음.
- 리플렉션 시스템: C++ 클래스의 변수 및 함수 정보를 메타데이터로 저장해, 에디터와 블루프린트에서 활용 가능.
- C++ 클래스와 리플렉션
UCLASS(), GENERATED_BODY() 매크로를 통해 클래스를 리플렉션 시스템에 등록.
UPROPERTY()를 사용해 변수의 에디터 노출 여부와 접근성을 제어:
- VisibleAnywhere: 읽기만 가능.
- EditAnywhere: 기본값과 인스턴스에서 수정 가능.
- BlueprintReadWrite: Blueprint에서 읽기/쓰기 가능.
- Category와 meta 옵션으로 세부 설정 가능.
- Blueprint 클래스는 C++ 클래스를 상속받아 생성 가능하며, 변수와 속성을 시각적으로 조정 가능.
- 함수와 리플렉션
UFUNCTION() 매크로를 통해 C++ 함수도 리플렉션에 등록 가능:
- BlueprintCallable: 실행 가능한 함수로 Blueprint 노드에 노출.
- BlueprintPure: Getter 함수로, 값만 반환.
- BlueprintImplementableEvent: 구현은 Blueprint에서 처리하도록 설정.
- Blueprint 노드에서 C++ 함수를 호출하거나, 이벤트 그래프를 통해 C++에서 정의된 이벤트를 처리 가능.
- 리플렉션의 장점
- 코드 수정 없이 에디터에서 변수나 함수를 조정하고 테스트 가능.
- Blueprint와 C++의 상호보완적인 워크플로우를 통해 협업과 효율성을 극대화.
- 복잡한 로직은 C++로, 시각적 구현과 조정은 Blueprint로 분업 가능.