블루프린트 스크립팅 및 C++는 액터 간에 통신하고 정보를 공유하는 몇 가지 방법을 제공합니다. 이 페이지는 사용 가능한 여러 액터 커뮤니케이션 방법에 대한 개요뿐만 아니라, 각각의 요구 사항 및 일반적인 사용 사례도 제공합니다.
각 액터 커뮤니케이션 타입에 대해 더 자세한 정보를 제공하는 퀵스타트 가이드 링크도 찾을 수 있습니다.
직접 커뮤니케이션
직접 액터 커뮤니케이션(Direct Actor Communication)은 레벨에서 액터 간 정보를 공유하는 가장 일반적인 방법입니다.
이 방법을 사용하려면 작업 중인 액터에서 타깃 액터의 정보에 액세스할 수 있도록 타깃 액터에 대한 레퍼런스가 필요합니다. 이 커뮤니케이션 타입은 작업 중인 액터와 타깃 액터 사이의 일대일 관계를 사용합니다.
사용 시점
레벨의 특정 액터에 대한 레퍼런스가 있고, 해당 특정 액터 내에서 정보를 공유하거나 기능을 트리거해야 할 때 이 커뮤니케이션 방법을 사용하세요.
예시
-
액터에서 이벤트를 트리거합니다.
-
레벨의 액터에서 정보를 획득합니다.
형변환(Casting)
형변환(Casting)은 액터에 대한 레퍼런스를 받아 다른 클래스로 변환하려고 할 때 흔히 사용하는 커뮤니케이션 방법입니다. 이러한 변환이 성공적으로 이루어졌다면 직접 커뮤니케이션을 사용하여 정보 및 기능에 액세스할 수 있습니다.
이 방법에는 레벨의 액터에 대한 레퍼런스가 필요한데, 형변환(Cast) 노드를 사용하여 액터의 레퍼런스를 특정 클래스로 변환해 볼 수 있기 때문입니다. 이 커뮤니케이션 방법은 작업 중인 액터와 타깃 액터 사이의 일대일 관계를 사용합니다.
사용 시점
액터에 대한 레퍼런스가 있고, 해당 액터가 정보에 액세스할 수 있는 특정 클래스에 속하는지 확인하고 싶을 때 이 커뮤니케이션 방법을 사용합니다.
예시
-
볼륨을 사용하여 모든 폰(Pawn)을 오버랩하고 폰 레퍼런스를 캐릭터 등의 특정 서브클래스로 형변환하여 정보에 액세스할 수 있습니다.
-
액터의 레퍼런스를 사용하여 일반 부모 클래스로 형변환하고 정보에 액세스할 수 있습니다.
인터페이스
인터페이스(Interface)는 다양한 액터 클래스에서 구현할 수 있는 일반적인 행동이나 기능 세트를 정의합니다. 이 커뮤니케이션 방법은 여러 액터 클래스에서 동일한 타입의 기능을 구현하는 프로세스를 간소화해 줍니다.
이 방법을 사용하려면 각 액터가 일반 함수에 액세스할 수 있도록 인터페이스를 구현해야 합니다. 또한 액터에 대한 레퍼런스가 필요합니다. 그래야 해당 레퍼런스를 사용하여 인터페이스 함수를 호출할 수 있습니다. 이 커뮤니케이션 방법은 작업 중인 액터와 타깃 액터 사이의 일대일 관계를 사용합니다.
사용 시점
여러 액터 타입에 적용되는 일반 기능을 생성하고 싶을 때 이 방법을 사용하세요.
예시
-
플레이어 상호작용 시 각 액터가 서로 다른 행동을 하는 상호작용 시스템을 생성할 수 있습니다. 예를 들어, 플레이어 상호작용 시 문 액터는 열리는 반면, 동일한 상호작용을 하더라도 라이트 액터는 활성화되도록 할 수 있습니다.
-
레벨의 서로 다른 액터에 대미지를 적용할 수 있습니다. 각 액터가 받는 대미지에 다르게 반응하도록 하는 것이 가능합니다. 예를 들어, 대미지를 받을 경우 벽 액터는 부서지는 반면, 문 액터는 열리도록 할 수 있습니다.
이벤트 디스패처
이벤트 디스패처(Event Dispatchers)는 하나의 액터가 이벤트를 트리거하고 해당 이벤트를 리스닝하는 다른 액터가 알림을 받는 커뮤니케이션 방법입니다.
이 방법을 사용하려면 작업 중인 액터에서 이벤트 디스패처를 생성하고 타깃 액터를 이벤트 디스패처에 바인딩해야 합니다. 이 커뮤니케이션 방법은 일대다 관계를 사용하며, 작업 중인 단일 액터가 리스닝하는 여러 개의 액터에 대해 이벤트 디스패처를 트리거합니다.
사용 시점
단일 이벤트로 여러 개의 서로 다른 액터에 영향을 주고 싶다면 이 커뮤니케이션 방법을 사용하세요.
예시
-
게임 내 보스의 죽음(BossDied) 이벤트를 생성합니다. 적 보스가 죽으면 이벤트가 트리거되어 문 액터가 열리고, HUD 액터가 메시지를 표시하며, 상자 액터가 열립니다.
-
하루 시작(DayStarted) 이벤트가 NPC에게 일상 루틴을 시작해야 한다고 알리는 낮/밤 사이클을 생성합니다.
액터 커뮤니케이션 레퍼런스 테이블
커뮤니케이션 타입 | 사용 시점 | 요구 사항 | 예시 |
---|---|---|---|
직접 커뮤니케이션(Direct Communication) | 레벨 내 액터의 특정 인스턴스와 통신할 때 사용합니다. | 레벨 내 액터에 대한 레퍼런스가 필요합니다. | 레벨 내 특정 액터에서 이벤트를 트리거합니다. |
형변환(Casting) | 액터가 프로퍼티에 액세스할 수 있는 특정 클래스에 속하는지 검증하고 싶을 때 사용합니다. | 원하는 액터 클래스로 형변환할 레벨 내 액터에 대한 레퍼런스가 필요합니다. | 동일한 부모 클래스를 공유하는 자손 액터의 특정 기능에 액세스합니다. |
인터페이스(Interfaces) | 서로 다른 액터 클래스에 동일한 기능을 추가할 때 사용합니다. | 레벨 내 액터에 대한 레퍼런스가 필요하며, 액터가 인터페이스를 구현해야 합니다. | 서로 다른 타입의 액터에 상호작용 행동을 추가합니다. |
이벤트 디스패처(Event Dispatchers) | 하나의 액터로부터 여러 개의 액터에 이벤트를 트리거할 때 사용합니다. | 액터가 이벤트에 등록하여 반응해야 합니다. | 이벤트가 트리거한 여러 타입의 액터에게 알림을 보냅니다. |
블루프린트 스크립팅 및 C++는 액터 간에 통신하고 정보를 공유하는 몇 가지 방법을 제공합니다. 이 페이지는 사용 가능한 여러 액터 커뮤니케이션 방법에 대한 개요뿐만 아니라, 각각의 요구 사항 및 일반적인 사용 사례도 제공합니다.
각 액터 커뮤니케이션 타입에 대해 더 자세한 정보를 제공하는 퀵스타트 가이드 링크도 찾을 수 있습니다.
직접 커뮤니케이션
직접 액터 커뮤니케이션(Direct Actor Communication)은 레벨에서 블루프린트 액터 간 정보를 공유하는 가장 일반적인 방법입니다.
이 방법을 사용하려면 작업 중인 액터에서 타깃 액터 클래스 블루프린트의 정보에 액세스할 수 있도록 타깃 액터 클래스 블루프린트에 대한 레퍼런스가 필요합니다. 이 커뮤니케이션 타입은 작업 중인 액터와 타깃 액터 사이의 일대일 관계를 사용합니다.
사용 시점
레벨의 특정 액터 클래스 블루프린트에 대한 레퍼런스가 있고, 해당 특정 액터 클래스 블루프린트 내에서 정보를 공유하거나 기능을 트리거해야 할 때 이 커뮤니케이션 방법을 사용하세요.
예시
-
액터에서 이벤트를 트리거합니다.
-
레벨의 액터에서 정보를 획득합니다.
블루프린트 클래스의 형변환
형변환(Casting)은 액터 클래스 블루프린트에 대한 레퍼런스를 받아 다른 클래스로 변환하려고 할 때 흔히 사용하는 커뮤니케이션 방법입니다. 이러한 변환이 성공적으로 이루어졌다면 직접 커뮤니케이션을 사용하여 정보 및 기능에 액세스할 수 있습니다.
이 방법에는 레벨의 액터 클래스 블루프린트에 대한 레퍼런스가 필요한데, 형변환(casting) 을 사용하여 액터 클래스 블루프린트의 레퍼런스를 특정 클래스로 변환해 볼 수 있기 때문입니다. 이 커뮤니케이션 방법은 작업 중인 액터와 타깃 액터 사이의 일대일 관계를 사용합니다.
사용 시점
액터 클래스 블루프린트에 대한 레퍼런스가 있고, 해당 액터 클래스 블루프린트가 정보에 액세스할 수 있는 특정 클래스에 속하는지 확인하고 싶을 때 이 커뮤니케이션 방법을 사용합니다.
예시
-
AVolume을 사용하여 모든 APawn을 오버랩하고 폰 레퍼런스를 ACharacter 등의 특정 서브클래스로 형변환하여 정보에 액세스할 수 있습니다.
-
액터 클래스 블루프린트의 레퍼런스를 사용하여 일반적인 부모 클래스로 형변환하고 정보에 액세스할 수 있습니다.
인터페이스
인터페이스(UInterface)는 다양한 클래스에서 구현할 수 있는 일반적인 메서드 비헤이비어 세트를 정의합니다. 이 커뮤니케이션 타입은 여러 액터 클래스 블루프린트에서 동일한 타입의 기능을 구현하는 프로세스를 간소화해 줍니다.
이 방법을 사용하려면 각 액터가 일반 메서드에 액세스하기 위해 인터페이스를 구현해야 합니다. 또한 액터 클래스 블루프린트에 대한 레퍼런스가 필요합니다. 그래야 해당 레퍼런스를 사용하여 인터페이스 함수를 호출할 수 있습니다. 이 커뮤니케이션 방법은 작업 중인 액터와 타깃 액터 사이의 일대일 관계를 사용합니다.
참고: 추가적인 문서는 인터페이스를 참조하세요.
사용 시점
여러 블루프린트 액터 타입에 적용되는 일반 기능을 생성하고 싶을 때 이 방법을 사용하세요.
예시
-
플레이어 상호작용 시 각 액터 클래스 블루프린트가 서로 다른 행동을 하는 상호작용 시스템을 생성할 수 있습니다. 예를 들어, 플레이어 상호작용 시 문 액터는 열리는 반면, 동일한 상호작용을 하더라도 라이트 액터는 활성화되도록 할 수 있습니다.
-
레벨의 서로 다른 액터에 대미지를 적용할 수 있습니다. 각 액터 클래스 블루프린트가 받는 대미지에 다르게 반응하도록 하는 것이 가능합니다. 예를 들어, 대미지를 받을 경우 벽 액터는 부서지는 반면, 문 액터는 열리도록 할 수 있습니다.
델리게이트
델리게이트(Delegates)는 액터 클래스 블루프린트에서 타입 안전(type-safe) 방식으로 메서드를 호출할 수 있습니다. 델리게이트는 하나의 액터가 '리스닝하는' 다른 액터에서 이벤트를 트리거하여 해당 이벤트에 대한 알림을 받는 관계를 형성하도록 동적으로 바인딩할 수 있습니다.
참고: 추가적인 문서는 델리게이트를 참조하세요.
사용 시점
단일 이벤트로 여러 개의 서로 다른 액터 클래스 블루프린트에 영향을 주고 싶다면 이 커뮤니케이션 타입을 사용하세요.
예시
-
게임 내 보스의 죽음(BossDied) 이벤트를 생성합니다. 적 보스가 죽으면 이벤트가 트리거되어 문 액터가 열리고, UMG 블루프린트가 메시지를 표시하며, 상자 액터가 열립니다.
-
하루 시작(DayStarted) 이벤트가 NPC에게 일상 루틴을 시작해야 한다고 알리는 낮/밤 사이클을 생성합니다.
블루프린트 클래스의 커뮤니케이션 레퍼런스 테이블
커뮤니케이션 타입 | 사용 시점 | 요구 사항 | 예시 |
---|---|---|---|
직접 커뮤니케이션(Direct Communication) | 레벨 내 액터의 특정 인스턴스와 통신할 때 사용합니다. | 레벨 내 액터에 대한 레퍼런스가 필요합니다. | 레벨 내 특정 액터에서 이벤트를 트리거합니다. |
형변환(Casting) | 액터가 프로퍼티에 액세스할 수 있는 특정 클래스에 속하는지 검증하고 싶을 때 사용합니다. | 원하는 액터 클래스로 형변환할 레벨 내 액터에 대한 레퍼런스가 필요합니다. | 동일한 부모 클래스를 공유하는 자손 액터의 특정 기능에 액세스합니다. |
인터페이스(Interfaces) | 서로 다른 액터 클래스에 동일한 기능을 추가할 때 사용합니다. | 레벨 내 액터에 대한 레퍼런스가 필요하며, 액터가 인터페이스를 구현해야 합니다. | 서로 다른 타입의 액터에 상호작용 행동을 추가합니다. |
이벤트 디스패처(Event Dispatchers) | 하나의 액터로부터 여러 개의 액터에 이벤트를 트리거할 때 사용합니다. | 액터가 이벤트에 등록하여 반응해야 합니다. | 이벤트가 트리거한 여러 타입의 액터에게 알림을 보냅니다. |