작성
·
160
·
수정됨
0
애님 그래프에서 사용하는 노드들을 보면 특정 조건에 콜백 함수를 등록하는 기능이 있는데요.
이것에 대해서 궁금한게 몇가지 있어서 작성했습니다.
여기에 bind 할 수 있는 함수는 해당 콤보박스로 만든 함수로 밖에 적용이 안되는 것 같은데 맞는 건가요??
----------------------------------------------------------------------------
그리고, 그렇게 만든 블루프린트 함수는 Thread Safe 가 활성화 되어 있어서 여기에 로직 구현 시, 제가 직접 c++로 만든 함수를 호출 할 수가 없는 것 같습니다.
혹시 thread safe 활성화된 블루프린트 function에서 c++함수를 호출 하게 하는 방법이 있을 까요???
참고로 meta 지정자의 "BlueprintThreadSafe" 를 사용하면 호출 할 수 있도록 목록에 뜨긴하는데, 제가 이 함수를 동기화 기법을 사용하지 않은 일반 함수로 구현했어도 그냥 써도 되는걸까요????
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
문의하신 내용은 Unreal Engine의 블루프린트 시스템과 관련된 것으로 보입니다. Unreal Engine의 블루프린트에서는 특정 이벤트나 상태에 함수를 바인딩(bind)하여 해당 상황에서 원하는 기능이 수행되도록 설정할 수 있습니다.
해당 콤보박스에서 선택할 수 있는 함수들은 블루프린트 내에서 생성되거나 해당 블루프린트에서 사용 가능한 것들 중에서 선택하는 것이 일반적이나, “Create Binding” 버튼을 통해 새로운 바인딩을 생성하실 수도 있습니다.
설정된 “Thread Safe” 옵션은 동시성 관련 문제 없이 멀티 스레드 환경에서 안전하게 실행될 수 있는 함수에 사용됩니다. Unreal Engine에서는 C++ 함수를 블루프린트와 통합하여 사용할 수 있으나, “BlueprintThreadSafe” 메타 지정자를 사용하여 블루프린트에서 thread safe로 체크된 함수를 호출할 수 있습니다.
하지만 주의해야 할 점은, 메타 지정자 “BlueprintThreadSafe”가 붙은 C++ 함수를 블루프린트에서 호출한다 해도, 실제로 해당 함수가 스레드 안전한 방식으로 구현되었는지 확인이 필요합니다. 동기화 기법을 사용하지 않고 구현된 일반 함수를 호출할 때는, 해당 함수가 스레드 안전하지 않다면 문제가 발생할 수 있습니다. 그러므로 해당 C++ 함수가 스레드 안전한지, 그렇지 않다면 동기화 기법을 적용해야 하는지 검토가 필요합니다.
좀 더 구체적인 도움이 필요하시면 Unreal Engine 문서나 관련 커뮤니티에 추가적인 정보를 요청하시는 것을 권장드립니다.