Sharingの接続先を入力できるようにする

どうも、mtwandこと00a3afです。

本日はSharingアプリケーションを作成する際に、Serverアドレスを実行側で設定する方法について書きます。

完成図はこちらです

ちなみに先駆者、と言いますか、既に同じことをされている方がいらっしゃるのでご紹介しておきます。

HoloLens/チュートリアル240の接続先をアプリ内で変更できるAdd-onを作った。

私はシーンの切り替えなどは恥ずかしながら経験がなく、本項においても同様の手法は使いませんのでご了承ください。

先に結論

基本的な処理の流れは以下のようになります

  1. Sharing関連の処理を全てDisableにする
  2. 接続先を入力し、その情報を SharingStage に渡す
  3. Sharing関連の処理を起動する

難しいことはないですね

Sharing関連の処理をDisableにする

具体的には SharingStage, SharingSessionTracker, CustomNessages, AutoJoinSession, ImportExportAnchorManager などです。

私はそのほかにもAppStateManatger, SpatialMapping, SurfaceMeshesToPlanes, そのほかSpectator View関係の処理をDisableにしています。

これらの処理はSharingStageを中心とするSharing関係の処理に大きく関連しているので、IPアドレスを指定しないまま勝手に動き出すと大変です。

なお、これらの処理ですが、SharingStageOnAwake で走り出す設計になっているので、(対処療法的ではありますが)アタッチされたオブジェクトごとあらかじめDeActiveしておくとよいでしょう。

接続先を入力し、その情報を SharingStage に渡す

今回はTextInputDialogなるものを自作し、その情報を同じく自作した管理クラスに渡し、SharingStageからその情報を参照しました。

ただし、SharingStageスクリプトはHolotoolkitにて提供されているスクリプトで、これを改変するのはあまり推奨されません。

先述のGameObjectごとDeActive化、というのもそもそも乱暴な方法ではありますし、Singleton化されている処理でもあるので、何か普通にもっとうまくやれる気がするので誰か良い方法教えてください。

Sharing関連の処理を起動する

今回はすべてDeActive化されているだけなのでこれを SetActive(true) すればOKです。

最後に

今回の一通りの処理はここ HololensAppBase/HololensSharingWithConfirmApplicationBase.unitypackage at master · M-T-Asagi/HololensAppBase · GitHub にまとまってるので、ご入用の方はどうぞ。 ただ、自分でもわかるほど作りが雑なのと、HoloToolKitが古かったり手加えてあったりと、恐らく普通には使いまわせないと思うので適当に切り出してご利用ください。

また、ダイアログ関連の処理については追って記事を書きます。正直こっちが本命な気もする。