[UE4] 다른 블루프린트의 함수 호출하기 (블루프린트 간 통신)
Call BP Function from another BP
1. Custom Event
클래스 블루프린트에서 커스텀 이벤트를 만들고 다른 블루프린트에서 호출하는 방식으로,
레벨 블루프린트에서도 호출할 수 있다.
반대로 레벨 블루프린트의 커스텀 이벤트는 클래스 블루프린트에서 호출 불가능하다.
add custom event 노드를 생성하고 이벤트명을 지정한다
이벤트를 호출할때 전달하고 싶은 값이 있다면 변수로 등록한다
노드를 클릭한 뒤 Details 패널에서 추가할 수 있다
다른 클래스 블루프린트에서 잘 호출되는 것을 확인할 수 있다.
BP Test 는 커스텀 이벤트 노드를 생성했던 블루프린트의 이름이다
2. Event Dispatcher
이벤트 디스패처는 다수의 이벤트를 하나로 묶어 동시에 호출할 수 있게 하는 델리게이트 형식이다.
따라서 커스텀 이벤트와 달리 Call 뿐만 아니라 Bind 기능이 존재하며, 어느 블루프린트에서든 call과 bind가 가능하다.
또한 커스텀 이벤트와 마찬가지로 클래스 블루프린트의 디스패처는 레벨 블루프린트에서 접근 가능하지만,
레벨 블루프린트의 디스패처는 클래스 블루프린트에서 call과 bind 모두 불가능하다.
아마도 블루프린트의 인스턴스는 A레벨과 B레벨에 동시에 존재할 수 있으니
B레벨에 존재하는 인스턴스가 A레벨의 디스패처 혹은 커스텀 이벤트에 접근하는 상황을 방지하기 위함인 듯 하다.
클래스 블루프린트의 My Blueprint 패널에서 Event Dispatchers 옆의 + 버튼을 눌러 새로운 디스패처를 생성한다.
Bind 노드를 이용해 디스패처에 이벤트를 바인드한다. 이때, 이벤트의 파라미터는
이벤트 디스패처의 input 값과 같아야 한다. input 값은 디스패처의 details 패널에서 설정할 수 있다.
물론 Bind 노드의 이벤트 핀을 끌어와 add custom event 를 통해 이벤트를 생성하면 자동으로 설정된다.
Call 노드를 통해 디스패처에 바인드 된 모든 이벤트를 실행시킬 수 있다.
Bind와 call 노드는 디스패처를 생성한 클래스 블루프린트 외에 다른 모든 블루프린트에서도 생성 가능하다.