Sharingの接続先を入力できるようにする
どうも、mtwandこと00a3afです。
本日はSharingアプリケーションを作成する際に、Serverアドレスを実行側で設定する方法について書きます。
完成図はこちらです
本日のブログのネタができました。
— 浅葱 (@asagi_00a3af) 2017年7月19日
なんで私は何かこう、周回遅れみたいなことしてるんだ? pic.twitter.com/xyp5CpXgcr
ちなみに先駆者、と言いますか、既に同じことをされている方がいらっしゃるのでご紹介しておきます。
HoloLens/チュートリアル240の接続先をアプリ内で変更できるAdd-onを作った。
私はシーンの切り替えなどは恥ずかしながら経験がなく、本項においても同様の手法は使いませんのでご了承ください。
先に結論
基本的な処理の流れは以下のようになります
- Sharing関連の処理を全てDisableにする
- 接続先を入力し、その情報を
SharingStage
に渡す - Sharing関連の処理を起動する
難しいことはないですね
Sharing関連の処理をDisableにする
具体的には SharingStage
, SharingSessionTracker
, CustomNessages
, AutoJoinSession
, ImportExportAnchorManager
などです。
私はそのほかにもAppStateManatger
, SpatialMapping
, SurfaceMeshesToPlanes
, そのほかSpectator View関係の処理をDisableにしています。
これらの処理はSharingStageを中心とするSharing関係の処理に大きく関連しているので、IPアドレスを指定しないまま勝手に動き出すと大変です。
なお、これらの処理ですが、SharingStage
が OnAwake
で走り出す設計になっているので、(対処療法的ではありますが)アタッチされたオブジェクトごとあらかじめ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が古かったり手加えてあったりと、恐らく普通には使いまわせないと思うので適当に切り出してご利用ください。
また、ダイアログ関連の処理については追って記事を書きます。正直こっちが本命な気もする。