본문 바로가기

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

(7)          글쓰기    
Disipatch Deligation Design Pattern Oberver 총을 쏘면 적이 맞고 전 에너미의 개수가 Widget UI에서 줄어들고 1이되면 즉 자기만 남으면 문이 열리게 해보겠다. 일단 BP_ThirdPersonCharacter에 AddCustomerEvent를 한후 앞쪽 노드들은 Die의 입력은 위젯을 하나만들고 text_enemy라는 UI를 만들자. 이전에 만든거에 추가했는데 Enemy만 있으면됨 변수로 체크해주고 UI가 만들어질때 BP_ThirdPerson의 갯수를 세서 text_Enemy에 업데이트하고 모든 ThirdPersonCharacter의 OnDeath Dispatcher(Deligation)을 등록해준다 Call이 생기면 DecreaseEnemyCnt 이벤트가 실행된다. 이제 문을 하나 만들자. Frame과Door는 StaticMesh이고 기본 ..
이벤트 바인딩 한 이벤트를 다른 블루프린트에 있을 수 있는 다른 이벤트 또는 이벤트 디스패처에 바인딩하는 이벤트 바인드 노드가 있다. 이벤트가 호출되면 여기에 바인딩된 다른 모든 이벤트도 호출된다. 예를 들어 Blueprint_Effect_Sparks의 자식 블루프린트 클래스를 만든다. 이 새 블루프린트는 이전 예에서 생성한 BP_Platform 블루프린트의 PlatformPressed 이벤트 디스패처에 이벤트를 바인드 한다. 1. 이벤트 디스패처 예제에서 사용된 프로젝트를 연다. 2. 컨텐트드로워 +Add에서 클래스블루프린트를 생성하고 모든 클래스메뉴를 확장해서 Blueprint_Effect_Sparks를 검색 선택하고 이름을 BP_Platform_Sparks로 하고 블루프린트에디터를 연다. 3. 컴포넌트탭에서 Sp..
이벤트 디스패처 이벤트 디스패처는 이벤트가 발생할 때 블루프린트가 다른 블루프린트에 알릴 수 있게 한다. 레벨 블루프린트및 다른 블루프린트클래스는 이 이벤트를 수신할 수 있으며 이벤트가 트리거 될때 서로 다른 액션을 실행할 것이다. 내 블루프린트 패널에서 이벤트 디스패처를 생성한다. 예를 들어 BP_Platform 블루프린트를 생성해보자. 액터 BP_Platform 블루프린트와 겹칠 때 PlatformPressed라는 이벤트 디스패처를 호출한다. 레벨 블루프린트에서 PlatformPressed 이벤트를 수신하고 있으면 이 이벤트가 트리거 되면 폭발이 발생한다. 1. 삼인칭 콘텐츠가 포함된 템플릿을 기반으로 새로 만들거나 기존 프로젝트를 사용한다. 2. 액터를 부모 클래스로 하는 BP_Platform 블루프린트를 생성하고..
[언리얼][블루프린트] 레벨 블루프린트 커뮤니케이션 언리얼엔진에는 게임의 각레벨마다 기본 레벨 블루프린트가 있다. 현재 레벨에서 발생하는 이벤트및 액션을 만드는데 유용하다. 연습을 위해 툴바의 +를 눌러 레벨에 트리거박스를 하나 놓겠다. 트리거박스를 통로에 위치시키고 사이즈를 넓게 해준다. 편집을 위해서는 툴바에서 블루프린트 버튼을 클릭하고 레벨 블루프린트 열기 옵션을 선택한다. 이벤트그래프를 우클릭하고 다음 스크린샷과 같이 TriggerBoxUAID에 대한 이벤트 추가 카테고리에 속한 이벤트 On Actor Begin Overlap을 추가한다. 레벨에디터로 돌아가 컨텐트 드로워를 클릭 하고 StarterContent>Blueprints로 이동하고 Blueprint_Effect_Sparks를 연다. 컴포넌트탭에서 Sparks컴포넌트를 선택하고 디테일탭에서..
[언리얼][블루프린트] 블루프린트의 형변환 부모클래스의 참조는 자식클래스의 변수와 함수에 접근할 수 없다. 형변환 함수를 이용해야 한다. 형변환의 또 다른 용도는 오브젝트 레퍼런스가 원하는 타입인지 안전하게 테스트 하는 것이다. 1.부모 클래스를 게임모드베이스로 BP_GameModeWithScore 블루프린트를 만들고 더블클릭한다. 2. 내블루프린트 패널에서 Integer 타입의 GameScore변수와 AddGameScore함수를 생성한다. 3. AddGameScore함수 디테일 패널에서 Score라는 Integer타입의 입력파라미터를 추가한다. 이 함수는 GameScore변수에 포인트를 추가하는데 사용한다. 4. 함수의 그래프에서 다음 스크린샷에 표시된 액션을 추가한다. GameScore변수의 GET및 SET노드를 추가한다. PrintStrin..
[언리얼][블루프린트] 직접 블루프린트 통신 직접 블루프린트 통신은 블루프린트/액터 사이의 간단한 통신 방법이다. 다른 액터/블루프린트에 대한 참조를 저장하는 오브젝트 레퍼런스 변수를 만드는 데 사용된다. 그런 다음 오브젝트 레퍼런스 변수를 액션의 타깃 입력 파라미터로 사용해 액션을 호출할 수 있다. 플레이어가 지나가면 포인트라이트의 사시성을 토글하는 BP_LightSwitch 블루프린트를 생성해 보자. 1. 프로젝트를 하나 생성하거나 연다. 2. 콘텐츠드러워를 열어 +추가를 누르고 블루프린트 클래스>액터부모클래스> 이름을 BP_LightSwitch 로 한고 더블클릭해서 블루프린트 에디터를 연다. 3. 컴포넌트 패널에서 스태틱 메시 컴포넌트를 추가하고 디테일에서 SM_CornerFrame 스태틱메시를 선택한다. 조명스위치를 시각적으로 표현한다. 4..
[언리얼][블루프린트통신] 블루프린트 통신의 이해 이전 장에서 블루프린트 클래스 함수들을 만드는 법을 배웠다. 이제 한 블루프린트에서 다른 블루프린트의 함수와 이베트를 호출하고 정보에 접근할 수 있는 블루프린트 통신을 소개한다. 레벨 블루프린트에서 액터를 참조하는 방법과 형변환의 개념도 배운다. 블루프린트 클래스와 레벨 블루프린트 사이의 통신을 가능하게 하는 이벤트 디스패쳐와 이벤트를 바인딩하는 방법에 대해서도 알아본다. 이장에서 다음과 같은 통신방법을 배우게 됩니다. 직접 블루프린트 통신 블루프린트의 형변환 레벨 블루프린트 통신 이벤트 디스패처 이벤트 바인딩