XREALのタップ操作をUnity側で入力として拾う方法

はじめに
こんにちは。
アプリ・データソリューショングループのide.tです。
本記事ではXREAL Beam Pro + Unityでアプリ開発をした際にXREAL側の操作をUnity側で拾うのに結構苦戦してしまったので、誰かの役に立つかもしれないという動機で紹介します。
目次
1. XREAL SDKについて
XREAL SDKはXREALがリリースしているARグラス(XREAL)のUnity向けの開発用SDKです。このSDKを導入することで、XREAL上で動作するアプリをUnity環境で開発することができます。SDKの導入方法については色々な記事で解説されているので本記事では割愛します。
2. XREALのコントローラー
開発において、採用したデバイスはXREAL One ProとXREAL Beam Pro(XREAL専用のスマートフォン)です。
この組み合わせではXREALを起動した際にXREAL Beam Proがコントローラーとして機能するようになります。
今回はこのXREAL Beam Pro上でのタップ操作をUnityで拾えるようにします。

※参考: https://www.xreal.com/jp/beampro
3. Unity側でXREALの入力を拾う
Unity側でXREALの入力を拾うために、UnityのInputSystem_Actionsを利用します。こちらはマウスやコントローラーなどあらゆる入力デバイスを抽象的に扱えるようにするための機能です。
こちらに画像の赤枠の部分のようにXRControllerInputというactionを作成し、[XREAL Controller]のtrigger Buttonを割り当てます。

その後、以下の画像のようにファイル名を指定し、C#ファイルを生成します。こちらで生成されたXRealUserInput.csをimportすることで作成したInputActionをソースコード上で呼び出せるようになります。
作成したXRealUserInput.csをimportし、UnityからXREALのタップ処理を拾う処理を以下のように実装しました。Awake()のタイミングでアプリ起動時にアクションを登録し、アプリ終了時に解除する実装になっています。これでXREALのコントローラーの入力をUnity側でキャッチしてソースコード上で利用できるようになりました。実際のアプリでは音声認識スタートのトリガーとして今回実装したタップ操作を利用しています。
苦労した点としては、作成したInputSystem_ActionsのC#ファイルを生成する必要があることに気づかず、4時間くらい無駄にしました(笑)
void Awake()
{
// Actionスクリプトのインスタンス生成
xrealUserInput = new XRealUserInput();
// トラックパッドクリックのアクションにメソッドを登録(購読)
xrealUserInput.XRControllerInput.TrackpadClick.performed += OnTrackpadClicked;
// 有効化
xrealUserInput.Enable();
}
void OnDisable()
{
// アプリ終了時やスクリプト無効時に、必ずイベント登録を解除(購読解除)
xrealUserInput.XRControllerInput.TrackpadClick.performed -= OnTrackpadClicked;
// 無効化
xrealUserInput.Disable();
}
4. さいごに
本記事に目を通していただきありがとうございます!XREALなどのARグラスはどんどん新しい機器が発売され、SDKの公開も進んでおり、盛り上がりを見せています。そのうち街行く方が全員ARグラスをかけているような時代が来るかもしれません。流行に乗り遅れないように新しい技術を追いかけていきたいと思います!








