프로그래밍 가이드

Modoium은 네트워크를 통해 연결된 모바일 기기로부터 전송되는 입력 이벤트를 바탕으로 모바일 입력 장치를 시뮬레이션하여 Unity Editor에서 모바일 입력을 직접 사용할 수 있도록 합니다. 기본적으로 Modoium은 별도의 프로젝트 설정 또는 코드 수정없이 이러한 입력 장치 시뮬레이션이 자동으로 동작하는 것을 추구하고 있습니다만, 사용하는 입력 처리 도구에 따라서는 Modoium의 기능을 최대한 활용하기 위해 따라야 할 내용이 있습니다.

입력

Unity에는 입력 처리 개발을 위해 제공되는 대표적인 도구 두 가지 - Input SystemUnityEngine.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.InputModoium.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.EventSystemUnityEngine.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가 설치된 상태에서도 걱정 없이 프로젝트를 빌드해도 됩니다.