HoloLensアプリを作成するときのフォルダ構成を公開します。
[アプリ名フォルダ]
+[Unityプロジェクトフォルダ]
+assets
|unityファイル
+UWP
|VisualStudioソリューションファイル
+[プロジェクトフォルダ]
こんな感じにUnity関連とUWP関連が別フォルダになるようにしていて、その2つのフォルダをアプリ名フォルダの下に作っています。
こうすることでまとめてドンっと開発環境渡したいときは[アプリ名フォルダ]まるごとzipにして渡してしまえばいいですね。
githubにあげるときも同様ですが、Unity環境とUWP環境で除外したいファイルが違ったりするので、UnityプロジェクトフォルダとUWPフォルダにそれぞれ.gitignoreを記述しておくとよいでしょう。
Unityプロジェクトを新規作成するときの考慮点
そのためには、HoloLensアプリを作るときにUnityを立ち上げたら、例えば次のように[Project Name]欄に記載する値と、[Location]欄に記載するフォルダ名の最後をまずは一致させておきます。
HoloToolkit-Unityの追加
Unityプロジェクトができあがったら、提携作業としてまずはHoloToolkit-Unityをアセットとして追加します。
githubのreleaseにアセットパッケージファイルがあるのであらかじめダウンロードしておきます。
2017/09/06現在、私が使っている環境は、
Unity 5.6.2f1
なので、HoloToolkit-Unityもv1.5.8.0になります。
[Assets]-[Import Package]-[Custom Package]メニューでダウンロードしたアセットパッケージファイルを指定します。
アセットが追加されるとメニューなども拡張されるので、HoloToolkitメニューからいつものConfigurationをやっておきましょう。
シーンの保存
Unityのシーンを保存したいときは、プロジェクト名と同じ名前で保存しています。
Build Settings (2017年9月編)
HoloLensに搭載されたOSはまだWindows 10 Anniversary Updateなので、開発環境がCreators UpdateやFall Creators Updateだったりした場合には、UWP SDKとして10.0.14393.0を明示的に選択します。
また、[Unity C# Projects]チェックもデフォルト状態ではついていないのでこれもつけておきます。
UWPソリューションを出力するときの考慮点
UWPフォルダは最初できていないので[新しいフォルダー]をクリックしてフォルダを作成して名前を「UWP」にします。
UWPのソリューション構成は次のように3つのプロジェクトから構成されます。
*ここで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なんですよね。