Unreal Engine 기초: 블루프린트 통신(Blueprint Communication) 정리

언리얼 엔진에서 액터 간에 데이터를 주고받는 방법은 다양.
각 통신 방식의 특징을 이해하고 상황에 맞는 최적의 방법을 선택하는 것이 효율적인 게임 개발의 핵심.


1. 레벨 블루프린트 vs 재사용 가능한 블루프린트

통신의 시작은 '어디에 로직을 작성하느냐'에서 시작.

  • 레벨 블루프린트: 특정 레벨에 종속되며, 해당 레벨 내의 액터들을 직접 참조하기 쉽움.
                              하지만 다른 레벨에서 재사용할 수 없다는 치명적인 단점이 있음.
  • 재사용 가능한 블루프린트: 클래스 기반의 액터 블루프린트로 제작하여 어떤 레벨에서든 독립적으로 동작하게 만듬.

2. 액터 참조와 퍼블릭 변수

통신을 하려면 '누구와' 통신할지(참조)를 정해야 함.

① 액터 구하기 (Getting Actor Reference)
가장 흔한 방법은 GetAllActorsOfClass를 사용하거나, Line Trace, Collision Overlap을 통해 부딪힌 액터의 정보를 가져오는 것.

② 퍼블릭 변수 (Public Variables)
변수 옆의 '눈' 아이콘을 켜서 인스턴스 편집 가능(Instance Editable) 상태로 만들면, 에디터의 상세 패널에서 직접 액터를 할당하거나 값을 수정할 수 있음.


3. 블루프린트 통신의 3대장

언리얼 공식 강의에서 강조하는 가장 중요한 통신 메커니즘.

방식 설명 및 활용
형변환 (Casting) 가장 직접적인 방법. "너 혹시 A 클래스니?"라고 확인한 뒤, 맞다면 해당 액터의 모든 정보에 접근.
(강한 결합)
인터페이스 (Interface) 상대방이 누구인지 몰라도 "상호작용"이라는 함수만 있으면 실행.
여러 종류의 액터가 같은 함수명에 다르게 반응해야 할 때 유용. (약한 결합)
이벤트 디스패처 "나 죽었어!"라고 방송(Call)을 하면, 이 소식을 듣겠다고 등록(Bind)한 모든 액터가 동시에 반응.
1:N 통신에 적합함.

블루프린트 통신 결론

통신 방식을 선택할 때는 다음 기준을 고려.

  • 확실히 대상이 정해져 있고 깊은 상호작용이 필요하다면? → Casting
  • 서로 다른 클래스들이 공통된 기능을 수행해야 한다면? → Interface
  • 한 액터의 변화를 다수의 액터가 감지해야 한다면? → Event Dispatcher

 

오늘 배운 것: 무조건 Casting을 쓰는 것보다 Interface를 적절히 섞어 쓰는 것이 프로젝트가 커졌을 때
                     메모리 관리와 컴파일 속도 면에서 훨씬 유리

 

+ Recent posts