본문 바로가기

블루프린팅/4. 블루프린트 통신

이벤트 바인딩

한 이벤트를 다른 블루프린트에 있을 수 있는 다른 이벤트 또는 이벤트 디스패처에 바인딩하는 이벤트 바인드 노드가 있다. 이벤트가 호출되면 여기에 바인딩된 다른 모든 이벤트도 호출된다.

예를 들어 Blueprint_Effect_Sparks의 자식 블루프린트 클래스를 만든다. 이 새 블루프린트는 이전 예에서 생성한 BP_Platform 블루프린트의 PlatformPressed 이벤트 디스패처에 이벤트를 바인드 한다.

 

1. 이벤트 디스패처 예제에서 사용된 프로젝트를 연다.

2. 컨텐트드로워 +Add에서 클래스블루프린트를 생성하고 모든 클래스메뉴를 확장해서 Blueprint_Effect_Sparks를 검색 선택하고 이름을 BP_Platform_Sparks로 하고 블루프린트에디터를 연다.

3. 컴포넌트탭에서 Sparks 컴포넌트를 선택하고 디테일 탭에서 자동활성화 속성을 검색 체크해제한다. Blueprint_Effect_Spaks에서 변경했으므로 이 옵션은 선택 해제돼 있어야 한다.

4. 내 블루프린트 패널에서 BP_Platform타입의 오브젝트 레퍼런스인 BP_Platform변수를 생성한다. 디테일 패널에서 인스턴스 편집가능 속성을 체크한다.

5. 이벤트그래프를 우클릭하고 BeginPlay이벤트를 추가한다. 내 블루프린트 패널에서 BP_Platform변수를 끌어 이벤트그래프에 놓는다 GET옵션을 선택해 노드를 생성한다.

6. BP Platform노드에서 파란 핀을 끌어 그래프에 놓으면 컨텍스트 메뉴가 열린다. ?Is Valid매크로를 추가해서 BP Platform변수가 인스턴스를 참조하는지 테스트한다. BeingPlay 이벤트의 흰색핀을 Is Valid 매크로의 Exec핀에 연결한다.

7.BP Platform노드에서 파란 핀을 다시 끌어 PlatformPressed에 이벤트 바인딩 액션을 추가한다. 이벤트 바인딩 노드의 흰색 핀에 Is Valid핀을 연결한다.

8.이벤트바인딩 노드의 빨간색핀을 끌어 커스텀이벤트 추가를 선택한다.

9. 컴포넌트 패널에서 Sparks 컴포넌트를 끌어 그래프에 놓는다. Sparks노드의 파란핀에서 끌어 그래프에 놓은 뒤 활성화를 선택한다.

10. 다음 스크린샷과 같이 노드를 연결하고 BP_Platform_Sparks를 컴파일한다.

11. 이미 레벨에 있는 BP_Platform인스턴스 근처에 BP_Platform_Spark인스턴스를 추가후 오른쪽 디테일 패널에서 BP_Platform변수의 드럽다운 메뉴를 클릭하고 인스턴스를 하나 선택한다.

12. 레벨에디터의 플레이 버튼을 클릭해 레벨을 테스트한다. 캐릭터를 BP_Platform의 위치로 이동시킨다. 캐릭터가 겹치면 PlatformPressed이벤트 디스패치가 트리거되고 커스텀 이벤트 BP_Platform_Sparks가 실행돼 스파크가 활성화된다.

 

13. Bind Event와 Activate사이를 직접 연결해보면 어떨가 해봤는데 Event Dispatcher Pin이 연결안되어 있다고 에러가 났다 이핀을 사용해야 하는듯하다 이핀은 Activate와는 직접 연결이 안되었다.

13. 정리해보면 맨 마지막 Sparks를 Activate하는게 목적인데 Event Platform Pressed 디스페처에 Bind 되어 활성화 되는듯 한다.

 

14. 레벨에 있는 BP_Platform_Sparks를  Ctrl-D로 몇개 복사하고 실행해보면 전부 동시에 스파클이 터지는 걸 볼수 있다.

 

 

#언리얼 #이벤트바인딩 #블루프린트