HoloLens開発にてUnity5.6へアップデートして.Net4.6指定にしたらNugetからMilkcocoaがインストールできて使えたメモです。
Unity5.5での状況
Unity UWPなHoloLens開発をしているときに、Milkcocoaを使いたくなります。
NuGet Gallery | Milkcocoa Library 1.3.0
こちら現状のものを読み込むとエラーが起こってしまう状況でした。
考えられる原因をみんなでディスカッションした
これには困り果てまして。このままだと大好きなMilkcocoaが使えない。ということでライブラリ作成者の松岡さんと、先日一緒にMilkcocoa x HoloLens情報を追っていた篠原さんとFacebook上にて、この状況に関してディスカッションしました。
結果わかったのが、UnityがNET3.5で、M2Mqttに対応しているアセンブリが入っていない模様。
そのときこんな話が浮上
松岡さんからこんなお話が。あれ?.NET 4.6?
私がUnity5.5を扱っている場合にはこのような状況。
分かったのはUnity5.6f1で対応したとのこと!
ええええ!これは試さねばということでやってみました。
Unity5.6f1にして.Net4.6に
Unity5.5からUnity5.6f1にアップデートして、VIsual Studio2017の呼び出しにしました。
Origamiプロジェクトを最小限に削った以前のプロジェクトを読み込みます。
当然プロジェクトを現状バージョンに合わせますかと聞かれます。
更新中。。。
PlayerSettingを見ます。
Api Compatibility Levelをみると増えています!
.Net4.6に設定します。ここで一度プロジェクトを保存しましょう。
ビルド
つづいて、HoloLens UWPのビルドをします。
ビルド中。
Visual Studio2017を起動してNugetインストール
Nugetインストールしていきましょう。
ビルド後のフォルダからHoloMilkcocoa.slnをダブルクリックしてVisual Studio2017を表示します。
NuGet Gallery からMilkcocoa Libraryを見に行ってNugetのインストールコマンドをコピーしておきます。
Nuget パッケージマネージャーコンソールを表示します。
Nugetインストール!!
無事に入りました!!
プログラムを書いてみる
Cubeに割り当てているCubeCommandにMilkcocoaのコードを書き加えてみます。
松岡さんのこちらを参考にします。→Milkcocoa SDK for UWP and .NET Framework – Qiita
using UnityEngine; using System.Collections; using System.Text; using UnityEngine.Networking; public class CubeCommand : MonoBehaviour { Vector3 originalPosition; #if UNITY_EDITOR // Unityでもクリックで動作する void OnMouseDown() { Debug.Log("OnMouseDown"); OnSelect(); } #endif #if UNITY_UWP // Milkcocoa private Milkcocoa.Milkcocoa Milkcocoa; #endif // Use this for initialization void Start() { Debug.Log("Start"); #if UNITY_UWP // Milkcocoa 接続 Milkcocoa = new Milkcocoa.Milkcocoa(" .mlkcca.com"); // 自分のMilkcocoa App IDを入れましょう #endif } // Called by GazeGestureManager when the user performs a Select gesture void OnSelect() { Debug.Log("OnSelect"); #if UNITY_UWP // クリック時にpush Milkcocoa.dataStore("message").push(new { content = "HoloLens meets Milkcocoa!!!!!!!!!!!!" }); #endif } }
こちらをHoloLensに転送して動かしてみます。
Cubeをクリックしまくります!
Milkcocoaに「HoloLens meets Milkcocoa!!!!!!!!!!!!」が送信されます。
余談
とはいえ、制作を進めていると、すこし怪しい挙動も。
ビルドでなくUnityから起動するエディタとしての場合は、まだ .Net 3.5 縛られているのでしょうか?
そちらで実行しても以前と同様のエラーが起きます。ビルド後のプロジェクトで行いましょう。
Nugetインストールが上手く行ってもMilkcocoaがコードヒントに登場しない場合があります。
この場合はソリューションのビルドとAssenbly-CSharpのビルド後に再度Nugetインストールするとうまくいきました。レアケースかも。
余談周りは引き続き調査はしていきます。Unity側のアップデートでやりやすくなる気もしますし。
おわりに
ともあれ、以下の状況が、今回すごく進んでいると思います。
- Unity5.6になって.Net4.6になってNugetでのバージョンチェックを正常に越えることができてインストールが通る
- Nugetインストールさえ通ればMilkcocoaライブラリが呼び出せてデータが送れている
- UnityでのエディタとしてのVisual Studio、HoloLensビルド&転送用のVisual Studioの環境の飼い慣らしはありそうだけど。
- M2Mqttもうまく入ったぽいので、MQTTプロトコルもしっかり扱えそう
いいですね!
ということで、Unityも進化してHoloLensでもMilkcocoaが使えるようになってきました。
これは、俄然、いままでのMilkcocoaのもつ「良い糊付け」の力を発揮して、HoloLensとも絡んでいけそうですね!
それではよきMilkcocoa & Unity & HoloLens Lifeを!