HoloLens開発にてUnity5.6へアップデートして.Net4.6指定にしたらNugetからMilkcocoaがインストールできて使えたメモ

HoloLens開発にてUnity5.6へアップデートして.Net4.6指定にしたらNugetからMilkcocoaがインストールできて使えたメモです。

Unity5.5での状況

Unity UWPなHoloLens開発をしているときに、Milkcocoaを使いたくなります。

NuGet Gallery | Milkcocoa Library 1.3.0

こちら現状のものを読み込むとエラーが起こってしまう状況でした。

image

考えられる原因をみんなでディスカッションした

これには困り果てまして。このままだと大好きなMilkcocoaが使えない。ということでライブラリ作成者の松岡さんと、先日一緒にMilkcocoa x HoloLens情報を追っていた篠原さんとFacebook上にて、この状況に関してディスカッションしました。

結果わかったのが、UnityがNET3.5で、M2Mqttに対応しているアセンブリが入っていない模様。

image

image

image

そのときこんな話が浮上

image

松岡さんからこんなお話が。あれ?.NET 4.6?

image

私がUnity5.5を扱っている場合にはこのような状況。

image

分かったのはUnity5.6f1で対応したとのこと!

ええええ!これは試さねばということでやってみました。

Unity5.6f1にして.Net4.6に

Unity5.5からUnity5.6f1にアップデートして、VIsual Studio2017の呼び出しにしました。

Origamiプロジェクトを最小限に削った以前のプロジェクトを読み込みます。

image

当然プロジェクトを現状バージョンに合わせますかと聞かれます。

image

更新中。。。

image

PlayerSettingを見ます。

image

Api Compatibility Levelをみると増えています!

image

.Net4.6に設定します。ここで一度プロジェクトを保存しましょう。

ビルド

つづいて、HoloLens UWPのビルドをします。

image

image

ビルド中。

Visual Studio2017を起動してNugetインストール

Nugetインストールしていきましょう。

image

ビルド後のフォルダからHoloMilkcocoa.slnをダブルクリックしてVisual Studio2017を表示します。

image

NuGet Gallery からMilkcocoa Libraryを見に行ってNugetのインストールコマンドをコピーしておきます。

image

Nuget パッケージマネージャーコンソールを表示します。

image

Nugetインストール!!

image

無事に入りました!!

プログラムを書いてみる

image

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に転送して動かしてみます。

image

Cubeをクリックしまくります!

image

Milkcocoaに「HoloLens meets Milkcocoa!!!!!!!!!!!!」が送信されます。

余談

とはいえ、制作を進めていると、すこし怪しい挙動も。

image

ビルドでなくUnityから起動するエディタとしての場合は、まだ .Net 3.5 縛られているのでしょうか?
そちらで実行しても以前と同様のエラーが起きます。ビルド後のプロジェクトで行いましょう。

image

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を!