프로그래밍 가이드
Modoium은 네트워크를 통해 연결된 모바일 기기로부터 전송되는 입력 이벤트를 바탕으로 모바일 입력 장치를 시뮬레이션하여 Unity Editor에서 모바일 입력을 직접 사용할 수 있도록 합니다. 기본적으로 Modoium은 별도의 프로젝트 설정 또는 코드 수정없이 이러한 입력 장치 시뮬레이션이 자동으로 동작하는 것을 추구하고 있습니다만, 사용하는 입력 처리 도구에 따라서는 Modoium의 기능을 최대한 활용하기 위해 따라야 할 내용이 있습니다.
입력
Unity에는 입력 처리 개발을 위해 제공되는 대표적인 도구 두 가지 - Input System과 UnityEngine.Input
- 이 있습니다. Modoium은 Input System을 사용하면 완벽하게 통합될 수 있으므로 입력 처리 도구로서 Input System을 사용할 것을 강력히 권장합니다. 물론 다소 제한적인 범위 내에서 UnityEngine.Input
을 사용하는 것도 가능합니다.
Input System
입력 장치 시뮬레이션이 가능한 Input System의 유연한 구조 덕분에, Input System을 사용하는 프로젝트에서는 Modoium을 설치하는 것만으로도 잘 동작합니다. 이때, 연결된 모바일 기기에 있는 입력 장치 중 Modoium에서 지원되는 모든 InputDevice
를 Unity Editor에서 사용할 수 있기 때문에 Input Binding을 설정할 때 마우스 입력을 신경쓰지 않아도 됩니다.
- 지원 입력 장치
Touchscreen
Keyboard
:Key.Escape
(Android Back 버튼 입력)
UnityEngine.Input
UnityEngine.Input
이 사용하는 내장 입력 모듈의 구조적 한계로 인해, Modoium은 UnityEngine.Input
API를 통해 입력 장치 시뮬레이션 데이터를 출력할 수 없습니다. 그 대신 Modoium에서 제공하는 Modoium.Service.Input
API를 사용함으로써 모바일 기기 입력 이벤트를 처리해야 합니다. 다만 Modoium.Service.Input
API는 UnityEngine.Input
과 동일한 API를 제공하기 때문에 (1) 기존 코드에서 사용하는 모든 UnityEngine.Input
을 Modoium.Service.Input
으로 변경하거나, (2) 입력 처리 코드가 작성된 모든 파일 상단에 아래와 같은 문장을 추가하면 됩니다.
using Input = Modoium.Service.Input;
- 지원 API
namespace Modoium.Service {
class Input {
static bool touchSupported;
static bool touchPressureSupported;
static bool multiTouchEnabled;
static bool touchCount;
static Touch GetTouch(int index);
// KeyCode.Escape (Android Back 버튼 입력)
static bool GetKey(KeyCode key);
static bool GetKeyUp(KeyCode key);
static bool GetKeyDown(KeyCode key);
// Note: 기타 API는 상응하는 UnityEngine.Input API를 단순히 호출
}
}
Scene에서 사용하는
UnityEngine.EventSystems.EventSystem
이UnityEngine.Input
기반의 Input Module을 사용하는 경우 Modoium은Modoium.Service.Input
이 사용되도록BaseInputModule.inputOverride
을 설정합니다. 만약 사용자 정의 입력을 위해 해당 기능을 사용하고 있는 경우 주의해 주세요.
프로젝트 설정
아래와 같이 Project Settings에서 Modoium Remote의 여러 동작을 설정할 수 있습니다.
- Simulate Touch With Mouse : 마우스 입력을 또 하나의 Touch로서 시뮬레이션합니다.
- Enable Android Back Button Input : Playing 중에 Android Back 버튼을 누르면, 앱에서 접속을 끊는 대신 Escape 키 입력으로서 동작합니다.
빌드
Modoium Remote Unity 패키지의 모든 기능은 Unity Editor 상에서만 동작하며 빌드 결과에는 아무런 영향을 미치지 않습니다. 따라서 Modoium Remote가 설치된 상태에서도 걱정 없이 프로젝트를 빌드해도 됩니다.