はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

HoloLensアプリ作成時の共通作業(2017年9月編)

HoloLensアプリを作成するときのフォルダ構成を公開します。

[アプリ名フォルダ]

   +[Unityプロジェクトフォルダ]

       +assets

          |unityファイル

   +UWP

          |VisualStudioソリューションファイル

          +[プロジェクトフォルダ]

こんな感じにUnity関連とUWP関連が別フォルダになるようにしていて、その2つのフォルダをアプリ名フォルダの下に作っています。

こうすることでまとめてドンっと開発環境渡したいときは[アプリ名フォルダ]まるごとzipにして渡してしまえばいいですね。

githubにあげるときも同様ですが、Unity環境とUWP環境で除外したいファイルが違ったりするので、UnityプロジェクトフォルダとUWPフォルダにそれぞれ.gitignoreを記述しておくとよいでしょう。

 

Unityプロジェクトを新規作成するときの考慮点

そのためには、HoloLensアプリを作るときにUnityを立ち上げたら、例えば次のように[Project Name]欄に記載する値と、[Location]欄に記載するフォルダ名の最後をまずは一致させておきます。

image

HoloToolkit-Unityの追加

Unityプロジェクトができあがったら、提携作業としてまずはHoloToolkit-Unityをアセットとして追加します。

githubのreleaseにアセットパッケージファイルがあるのであらかじめダウンロードしておきます。

2017/09/06現在、私が使っている環境は、

Unity 5.6.2f1

なので、HoloToolkit-Unityもv1.5.8.0になります。

image

[Assets]-[Import Package]-[Custom Package]メニューでダウンロードしたアセットパッケージファイルを指定します。

image

アセットが追加されるとメニューなども拡張されるので、HoloToolkitメニューからいつものConfigurationをやっておきましょう。

シーンの保存

Unityのシーンを保存したいときは、プロジェクト名と同じ名前で保存しています。

image

Build Settings (2017年9月編)

HoloLensに搭載されたOSはまだWindows 10 Anniversary Updateなので、開発環境がCreators UpdateやFall Creators Updateだったりした場合には、UWP SDKとして10.0.14393.0を明示的に選択します。

image

また、[Unity C# Projects]チェックもデフォルト状態ではついていないのでこれもつけておきます。

UWPソリューションを出力するときの考慮点

image

UWPフォルダは最初できていないので[新しいフォルダー]をクリックしてフォルダを作成して名前を「UWP」にします。

UWPのソリューション構成は次のように3つのプロジェクトから構成されます。

image

*ここでVisual Studio 2015 Update 3を使っていると特に問題なく、HoloLensをUSBで接続した途にビルドタイプ「x86」にして出力先を「Device」にすればHoloLensでアプリが立ち上がります。

 

さて、現状のUnity 5.6.2f1からだとVisual Studio 2017を使うとエラーでビルドが失敗します(15.3.3でも失敗する)。

原因は、上2つのプロジェクトのcsprojファイルで記載されている

RunSerializationWeaver

の実行プロセスで

System.Collections.Generic.KeyNotFoundException: 指定されたキーはディレクトリ内に存在しませんでした。

というエラーが発生して

UWP\GeneratedProjectsUWP\Assembly-CSharp-firstpass\bin\x86\Debug\Assembly-CSharp-firstpass.dll

UWP\GeneratedProjects\UWP\Assembly-CSharp\bin\x86\Debug\Assembly-CSharp.dll

が作成されないからです。

また、最後の1つのプロジェクトでも

UWP\Unity\Tools\AssemblyConverter.exeの実行プロセスで

System.Collections.Generic.KeyNotFoundException: 指定されたキーはディレクトリ内に存在しませんでした。

というエラーが発生します。

 

どうやらこれを解決するためには、Unity 5.6ならばVisual Studio 2015にするか、Visual Studio 2017にしたいならUnity側をUnity 2017.1.0p5にするしかないようです。

でも、Unity 2017用のHoloToolKit-Unity (Unity 2017用だとMixedRealityToolkit-Unity) は、Pre-releaseなんですよね。