블루프린트 직접 통신

다른 블루프린트에서 한 블루프린트의 함수, 이벤트, 변수를 사용하는 법입니다.

Windows
MacOS
Linux

직접 블루프린트 통신 (또는 블루프린트 통신) 은 가장 흔한 통신 방법으로, 특정 시점에서 서로 대화를 하고자 하는 것으로 알고있는 블루프린트 액터 가 두 개 있을 때 좋습니다. 이러한 통신 유형은 항상 1:1, 즉 한 블루프린트 (작업 블루프린트) 가 다른 블루프린트 (타깃 블루프린트) 로의 접근을 요청하는 것입니다. 블루프린트 통신 을 이용하는 가장 단순한 방법은, 공개적으로 노출된 오브젝트 변수 를 통해 타깃 블루프린트 로의 레퍼런스를 구한 다음 접근하고자 하는 블루프린트의 인스턴스를 지정하는 것입니다.

일반적인 작업방식

직접 블루프린트 통신을 사용하기 위해 가장 먼저 해야하는 작업은, 어떤 블루프린트와 통신할 것인지 식별하는 것입니다.

SelectedBlueprints.png

위에서는 Character (캐릭터) 블루프린트와 Ceiling Light (천정등) 블루프린트를 만들어, 캐릭터가 켜고 끌 수 있도록 하고자 합니다.

여기서 작업중인 블루프린트는 캐릭터 블루프린트이고, 천정등 블루프린트를 대상으로 하고 있습니다. 직접 블루프린트 통신을 통해 플레이어 캐릭터가 버튼을 누르면 천정등 블루프린트를 대상으로 하여 불을 끄라고 할 수 있습니다. 그러기 위해서는 캐릭터 블루프린트 안에 공개적으로 노출되는 변수를 만들고, 천정등 블루프린트를 타깃으로 삼아야 합니다.

TargetVariable.png

위의 캐릭터 블루프린트 안에서 천정등 블루프린트 유형 변수를 만들고, Editable (편집가능) 설정도 해 두면 레벨에 영향을 끼치고자 하는 라이트 인스턴스를 설정할 수 있게 됩니다.

어느 변수, 함수, 이벤트를 노출시킬지에 대해서는 유의하시기 바랍니다. 다른 사람이 접근해서 변경했을 경우 안전하지 않은 변수는 노출시키지 마세요. 모든 것을 노출하기 보다는 다른 블루프린트에서 필요하거나 레벨 디자이너가 변경할 수 있도록 하고픈 부분만 노출하는 것이 모범 사례라 하겠습니다.

캐릭터 블루프린트를 선택한 채 레벨에 보면 새로운 변수가 보이며, 디테일 패널에서 설정 가능합니다.

NewVariableCreated.png

기본적으로 변수는 None 으로 설정되어 있고, 영향을 끼치고자 하는 천정등 인스턴스를 정의해 줘야 하는데, 레벨에 천정등이 여럿 있을 수 있으므로 통신 대상을 정해야 하기 때문입니다. 드롭 다운 메뉴 (또는 스포이드 아이콘) 클릭으로 통신하고자 하는 인스턴스를 레벨에서 선택하여 지정하면 됩니다.

SelectInstance.png

이 레벨에는 천정등이 하나뿐이므로 하나만 표시되나, 여럿 있다면 드롭다운에 전부 나열될 것입니다.

직접 통신하고자 하는 인스턴스를 정의하고 나면, 그 라이트의 함수성, 변수, 그 외 캐릭터 블루프린트 내 기타 세팅을 접근할 수 있게 될 것입니다.

조금 더 자세한 안내는 직접 블루프린트 통신 문서를 참고하세요.

함수 & 직접 블루프린트 통신

블루프린트에서 함수 작업을 할 때, 타깃 블루프린트 유형을 함수의 파라미터로 지정하면 여전히 직접 블루프린트 통신이 가능합니다.

FunctionTarget.png

위에서는 ToggleLight 함수를 생성, 입력 핀은 천정등 블루프린트로 연결되었습니다.

함수에서 타깃 블루프린트를 사용할 때, 타깃의 어느 인스턴스와 통신하고자 하는지 여전히 지시해 줘야 합니다. 그 방법은 (아래) 공개적으로 노출된 변수를 사용하거나, 이 함수 호출시 외부적으로 제공해 주면 됩니다.

ToggleLight.png

위에서, F 키가 눌리면, ToggleLight 함수를 호출하지만, 타깃은 공개 노출된 변수로 합니다.

문제 해결

변수에 지정된 인스턴스가 전혀 없을 때 자주 발생하는 오류가 있습니다. 타깃 블루프린트에서의 스크립트를 구하여 작업중인 블루프린트에서 호출하는 데 문제가 있는 경우, 사용하고자 하는 블루프린트 인스턴스를 제대로 지정했는지 확인하시기 바랍니다.

NoneSettings.png

만약 그 대신 함수 호출 결과로부터 변수를 설정한 경우, 로그에 변수가 "Access None" 예외가 발생했다는 경고가 보일 것입니다. 메시지 로그 창을 열면, 제공된 링크를 통해 문제를 일으키는 노드로 이동할 수 있습니다.

ErrorMessage.png

위에서, 함수는 호출되었으나 타깃 블루프린트의 인스턴스가 지정되지 않아 Accessed None 오류가 발생했습니다. 이 오류를 통해 문제를 일으키는 스크립트뿐 아니라 오류가 발생하고 있는 블루프린트도 알 수 있습니다. 어느 것이든 클릭하면 문제가 생긴 블루프린트가 열립니다.

태그

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼