스위치 사용 방식은 두 가지입니다.
-
상호작용할 수 있는 물리적 스위치로 사용하면 플레이어가 문을 열거나 닫고, 불을 켜거나 끌 수 있습니다.
-
다른 장치와의 상호작용을 필터링합니다. 예를 들어 스위치가 켜진 상태면 특정 채널에 송신하고, 스위치가 꺼진 상태면 다른 채널에 송신합니다.
스위치 장치를 찾으려면 장치 찾기와 설치하기를 참조하세요.
상황별 필터링
일부 장치는 상황별 필터링 이라는 기능의 영향을 받습니다. 이는 특정 관련 옵션의 설정값에 따라 옵션을 숨기거나 표시하는 기능입니다. 이로서 커스터마이징 패널이 깔끔해지고, 옵션을 관리하거나 찾기가 쉬워질 것입니다.
하지만 어떤 옵션이나 값이 상황별 필터링을 트리거하는지 파악하는 것은 어려울 수 있습니다. 이런 부분을 알아보기 쉽도록, 상황별 필터링을 트리거하는 값은 이탤릭체 로 표시되어 있습니다. 상황별 필터링이 적용되는 옵션을 포함하여, 모든 옵션이 표기되어 있습니다. 특정 옵션의 값에 따라 숨겨지거나 표시되는 경우 해당 옵션에 대한 설명에 언급되어 있습니다.
장치 옵션
이 장치에는 장치 표시 여부, 플레이어가 스위치와 상호작용할 때 보게 되는 텍스트 조정 등 기본 기능이 있습니다. 또한 스위치 상태 저장 등 고급 옵션도 있습니다.
다음 옵션으로 이 장치를 구성할 수 있습니다.
기본값은 굵게 표시됩니다. 상황별 필터링을 사용하는 값은 이탤릭체로 표시됩니다.
옵션 | 값 | 설명 | |
---|---|---|---|
게임 시작 시 사용 | 켜기, 끄기 | 게임 시작 시 장치 사용 여부를 설정합니다. 장치가 사용 안 함 상태에서는 사용을 제외하고 모든 이벤트를 무시합니다. | |
초기 상태 | 끄기, 켜기 | 플레이어가 상태를 오버라이드하지 않았을 때 스위치의 기본 상태입니다. | |
게임 중에 표시 | 켜기, 끄기 | 게임 중에 플레이어에게 장치를 표시할지 설정합니다. | |
켜기 텍스트 | 텍스트 입력 | 스위치를 켜기로 바꿀 때 표시되는 텍스트입니다. 150자 이하여야 합니다. | |
끄기 텍스트 | 텍스트 입력 | 스위치를 끄기로 바꿀 때 표시되는 텍스트입니다. 150자 이하여야 합니다. | |
장치 모델 | 기본, 구형 레버, 토글 스위치, 기본(꺼짐), 구형 레버(꺼짐), 빨간색 버튼, 차단기, 고대 레버, 체크상자 | 스위치가 사용할 시각 모델입니다. | |
음향 | 사용, 사용 안 함 | 끄기에서 켜기, 켜기에서 끄기로 스위치 상태가 변할 때 음향을 재생할지 설정합니다. | |
상호작용 허용 | 켜기, 끄기 | 플레이어가 이 장치와 상호작용할 수 있는지 설정합니다. | |
상호작용 시간 | 즉시, 초 단위 시간 선택 또는 입력 | 플레이어가 장치를 활성화하기 위해 상호작용해야 하는 시간을 설정합니다. | |
변경 가능 횟수 제한 | 끄기, 켜기 | 장치 변경 가능 횟수에 제한을 둘지 설정합니다. 켜기 로 설정하면 아래에 추가 옵션이 나타납니다. | |
변경 가능 횟수 | 1, 숫자 선택 또는 입력 | 장치가 사용 안 함 상태로 설정하기 전까지 토글할 수 있는 횟수를 설정합니다. | |
재사용 대기시간 무한 | 끄기, 켜기 | 장치 상호작용 간 재사용 대기시간을 설정합니다. 켜기 로 설정하면 재사용 대기시간 옵션이 아래에 나타나지 않습니다. | |
재사용 대기시간 | 즉시, 초 단위 수치 선택 | 이 옵션은 재사용 대기시간 무한 을 끄기 로 설정한 경우에만 나타납니다. 상호작용 간 재사용 대기시간을 설정합니다. | |
허용할 클래스 | 클래스 없음, 모든 클래스, 클래스 선택 또는 입력 | 장치를 활성화할 수 있는 클래스를 설정합니다. | |
허용할 팀 | 모두, 팀 선택 또는 입력 | 장치를 활성화할 수 있는 팀을 설정합니다. | |
상호작용 반경 | 0, 반경 선택 또는 입력 | 플레이어가 버튼을 직접 보지 않더라도 지정된 크기의 반경 내에 있는 아무 지점이나 바라보면 상호작용할 수 있습니다. 가시성 설정과 함께 사용하면 플레이어가 다른 사물과 상호작용하는 것처럼 나타나게 할 수 있습니다. | |
상태 초기화 시간 | 초기화 없음, 숫자 선택 또는 입력 | 장치가 기본 상태로 초기화되기까지 걸리는 시간을 설정합니다. | |
상호 배타적 | 배타성 없음, 숫자 선택 | 이 스위치를 켜기 로 설정하면 상호 배타적 인덱스 번호가 동일한 모든 다른 스위치를 끕니다. | |
플레이어별 상태 저장 | 켜기, 끄기 | 켜기 로 설정한 경우 플레이어별로 자체적인 스위치 상태가 있습니다. 끄기 로 설정하면 모든 플레이어의 스위치 상태가 동일합니다. 이 옵션을 끄기 로 설정하고 퍼시스턴스 사용 옵션을 사용 으로 설정할 경우, 상태가 불러오기를 시도하면 스위치가 충돌 해결 옵션을 사용합니다. | |
퍼시스턴스 사용 | 사용하지 않음, 사용 | 이 장치가 백엔드에 데이터를 불러올지 설정합니다. 사용 으로 설정하면 추가 옵션이 모든 옵션 탭에 표시됩니다. | |
자동 저장 | 켜기, 끄기 | 이 옵션은 퍼시스턴스 사용 옵션을 사용 으로 설정한 경우에만 나타납니다. 스위치 상태가 변하면 자동으로 저장될지 여부를 설정합니다. | |
자동 불러오기 | 켜기, 끄기 | 이 옵션은 퍼시스턴스 사용 옵션을 사용 으로 설정한 경우에만 나타납니다. 게임 시작 시 스위치 상태를 자동으로 불러올지, 이벤트 바인딩으로만 불러올지 설정합니다. | |
충돌 해결 | 첫 번째 플레이어, 다수, 우선시 켜짐, 우선시 꺼짐 | 이 옵션은 퍼시스턴스 사용 옵션을 사용 으로 설정한 경우에만 나타납니다. 플레이어별 상태 저장 을 끄기 로 설정하고 상태를 불러올 때 적용됩니다. 옵션 값은 다음과 같습니다.
|
|
게임 시작 시 상태 확인 | 사용, 사용 안 함 | 게임 시작 시 스위치가 상태를 확인할지 여부를 설정해 확인 결과 켜져 있으면 또는 확인 결과 꺼져 있으면 이벤트를 트리거합니다. | |
사용 안 할 시 스위치 상태 확인 | 켜기, 끄기 | 사용 안 함으로 설정되어 있더라도 장치가 상태를 확인할지 여부를 설정합니다. |
다이렉트 이벤트 바인딩 시스템
다이렉트 이벤트 바인딩 은 장치끼리 직접 소통할 수 있는 시스템으로, 작업 과정이 더 직관적이고 자유도가 높아져 디자인 아이디어에 집중할 수 있습니다.
이 장치의 기능과 이벤트는 다음과 같습니다.
기능
기능은 장치에서 이벤트를 수신한 후 작업을 수행합니다.
- 기능은 옵션 을 클릭하고 장치 선택 에서 장치 드롭다운 메뉴 를 선택해 확인합니다.
- 장치를 선택한 후 이벤트 선택 을 클릭하여 장치의 기능을 트리거할 이벤트에 장치를 바인딩합니다.
- 기능을 적용할 장치가 두 개 이상이거나 이벤트가 기능을 트리거하는 경우, 추가 버튼을 눌러 줄을 추가하고 이 단계를 반복합니다.
옵션 | 설명 |
---|---|
수신 시 사용 | 이벤트 발생 시 장치를 사용 상태로 설정합니다. |
수신 시 사용 안 함 | 이벤트 발생 시 장치를 사용 안 함 상태로 설정합니다. |
수신 시 켜기 | 이벤트 발생 시 스위치를 켭니다. |
수신 시 끄기 | 이벤트 발생 시 스위치를 끕니다. |
수신 시 상태 토글 | 이벤트 발생 시 스위치를 토글합니다. |
수신 시 상태 불러오기 | 이벤트 발생 시 스위치 상태를 불러옵니다. |
수신 시 상태 저장 | 이벤트 발생 시 스위치 상태를 저장합니다. |
수신 시 상태 확인 | 이벤트 발생 시 스위치 상태를 확인합니다. |
수신 시 플레이어 퍼시스턴스 데이터 삭제 | 이벤트 발생 시 작동시킨 플레이어의 퍼시스턴스 데이터를 삭제합니다. |
수신 시 현재 플레이어의 모든 퍼시스턴스 데이터 삭제 | 이벤트 발생 시 현재 모든 플레이어의 모든 퍼시스턴스 데이터를 삭제합니다. |
수신 시 모두의 상태 저장 | 이벤트 발생 시 모든 플레이어의 스위치 상태를 저장합니다. |
수신 시 모두의 상태 불러오기 | 이벤트 발생 시 모든 플레이어의 스위치 상태를 불러옵니다. |
이벤트
다이렉트 이벤트 바인딩은 이벤트를 송신기로 사용합니다. 이벤트는 다른 장치에게 기능을 수행하도록 지시합니다.
- 이벤트 옵션은 옵션 을 클릭하고 장치 선택 에서 장치 드롭다운 메뉴 를 선택해 확인합니다.
- 장치를 선택한 후 기능 선택 을 클릭하여 해당 장치의 기능에 이벤트를 바인딩합니다.
- 이벤트로 트리거되는 기능이 두 개 이상일 경우 추가 버튼을 눌러 줄을 추가하고 이 단계를 반복합니다.
옵션 | 설명 |
---|---|
켤 시 이벤트 송신 | 스위치가 켜지면 선택한 장치에 이벤트를 송신하여 선택한 기능을 트리거합니다. |
끌 시 이벤트 송신 | 스위치가 꺼지면 선택한 장치에 이벤트를 송신하여 선택한 기능을 트리거합니다. |
확인 결과 켜져 있으면 이벤트 송신 | 상태 확인 시 스위치가 켜져 있으면 선택한 장치에 이벤트를 송신하여 선택한 기능을 트리거합니다. |
확인 결과 꺼져 있으면 이벤트 송신 | 상태 확인 시 스위치가 꺼져 있으면 선택한 장치에 이벤트를 송신하여 선택한 기능을 트리거합니다. |
상태 저장 시 이벤트 송신 | 스위치 상태가 저장되면 선택한 장치에 이벤트를 송신하여 선택한 기능을 트리거합니다. |
상태 변경 시 이벤트 송신 | 스위치 상태가 변경되면 선택한 장치에 이벤트를 송신하여 선택한 기능을 트리거합니다. |
상태 불러오기 시 이벤트 송신 | 스위치 상태를 불러오면 선택한 장치에 이벤트를 송신하여 선택한 기능을 트리거합니다. |
삭제 시 이벤트 송신 | 스위치의 퍼시스턴스 데이터가 삭제되면 선택한 장치에 이벤트를 송신하여 선택한 기능을 트리거합니다. |
Verse에서 스위치 사용
아래 코드로 Verse에서 스위치 장치를 제어할 수 있습니다. 이 코드는 스위치 장치 API에서 이벤트와 기능 사용법을 보여줍니다. 나의 경험에 맞추어 수정하세요.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# Verse로 작성해 레벨에 배치할 수 있는 포크리 장치
switch_device_verse_example := class(creative_device):
# 레벨의 스위치 장치에 대한 레퍼런스.
# 이 Verse 장치의 디테일 패널에서
# 이 속성을 스위치 장치로 설정하세요.
@editable
MySwitchDevice:switch_device = switch_device{}
# 현지화 가능한 메시지로, 플레이어에게 보이는 텍스트를 설정할 수 있습니다.
TurnOnInteractionText<localizes>:message = "커스텀 스위치 켜짐 텍스트!"
# 실행 중인 게임에서 장치가 시작되면 실행
OnBegin<override>()<suspends>:void=
# 포크리 장치에서 이벤트를 구독하는 예시입니다.
# 스위치 상태가 변하면 신호를 송신합니다.
MySwitchDevice.StateChangesEvent.Subscribe(OnStateChanged)
# 스위치가 현재 꺼져 있으면 사용자에게 *켜기 텍스트*를 표시하고 스위치를 켜는 상호작용을 제공합니다. 150자까지 허용됩니다.
MySwitchDevice.SetTurnOnInteractionText(TurnOnInteractionText)
# StateChangesEvent의 이벤트 핸들러이기 때문에 플레이어가 게임 내에서 스위치를 켜거나 끄면 이 기능이 실행됩니다.
OnStateChanged():void=
Print("Switch Device state changed.")
# 이 장치가 단일 글로벌 켜짐/꺼짐 상태를 가지고 있는지, 개별 agent마다 특화된 켜짐/꺼짐 상태를 가지고 있는지 확인하는 쿼리입니다.
if (MySwitchDevice.IsStatePerAgent[]):
Print("Switch Device state is set to per agent.")
# 경험 내 모든 플레이어에게 이 예시를 반복하여 장치에서 작업을 수행하는 방법을 플레이어마다 보여줍니다.
for (Player : GetPlayspace().GetPlayers()):
# 이 스위치의 현재 상태 리턴: true(켜짐) 또는 false(꺼짐)입니다. 이 장치의 *플레이어별 상태 저장* 옵션을 *켜기*로 설정한 경우 이 `GetCurrentState` 오버로드를 사용합니다.
if (MySwitchDevice.GetCurrentState[Player]):
Print("Current state is on.")
else:
Print("Current state is off.")
else:
Print("Switch Device state is not set to per agent.")
# 이 스위치의 현재 상태 리턴: true(켜짐) 또는 false(꺼짐)입니다. 이 장치의 *플레이어별 상태 저장* 옵션을 *끄기*로 설정한 경우 이 `GetCurrentState` 오버로드를 사용합니다.
if (MySwitchDevice.GetCurrentState[]):
Print("Current state is on.")
else:
Print("Current state is off.")
이 코드를 UEFN 경험에서 사용하려면 다음 과정을 따릅니다.
- 섬에 스위치 장치를 끌어 놓습니다.
- switch_device_verse_example 라는 이름의 새 Verse 장치를 생성합니다. 과정은 Verse를 사용하여 나만의 장치 만들기를 참조하세요.
- Visual Studio Code에서 Visual Studio Code의 switch_device_verse_example.verse 를 열고 위 코드를 붙여 넣습니다.
- 코드를 컴파일한 뒤 Verse로 작성한 장치를 섬에 끌어 놓습니다. 과정은 레벨에 Verse 장치 추가하기를 참조하세요.
- Verse 장치에 섬의 스위치 장치에 대한 레퍼런스를 추가합니다. 과정은 레벨의 포크리 장치에 Verse 레퍼런스 추가하기를 참조하세요.
- 프로젝트를 저장하고 세션 시작 을 눌러 플레이테스트를 시작합니다.
스위치 장치 Verse API
Verse에서 스위치 장치를 사용하는 방법은 speaker_device
API 레퍼런스를 참조하세요.