MRが楽しい

MRやVRについて学習したことを書き残す

MRTK v2のドキュメントを少しずつ読み解く MixedRealityToolkit NuGetパッケージ

本日は MRTKv2 の調査枠です。
MRTKv2 の Guides ドキュメントを少しずつ読み進めていきます。

MRTKv2のGuidesドキュメント

以下のドキュメントを読み進めていきます。
microsoft.github.io

以下のページでは有志による本ドキュメントの日本語翻訳が行われています。
投稿時点でこちらで未翻訳、または著者が興味のある部分について記事にしていきます。
hololabinc.github.io

本記事では以下のページを読み進めます。
microsoft.github.io
f:id:bluebirdofoz:20200216035649j:plain

MRTK v2.3.0 がリリースされ、ドキュメントページも一部更新されました。
今回は 2.3.0 で新規追加されたページを読み解きます。

MixedRealityToolkit NuGetパッケージ

MixedRealityToolkit(MRTK) が NuGet.org で NuGet パッケージとして利用できるようになりました。
.unitypackageと異なり、MRTK の NuGet バージョンの使用に関してはいくつかの違いがあります。
本セクションの NuGet パッケージに関する考慮事項をお読みください。

問題が発生した場合は、以下のテンプレートを使用して問題を報告してください。
github.com

注意

NuGet パッケージの MRTK を使用するための既存プロジェクトの移行はまだサポートされていません。
新しいプロジェクトに対してのみ、NuGet を介して MRTK を使用できます。

NuGetパッケージのインストール

MixedRealityToolkit を NuGet パッケージとしてプロジェクトに追加するには次の手順に従ってください。

1.最新の NuGetForUnity の .unitypackage をダウンロードします。
 NuGetForUnity が既にインストールされている場合はバージョン2.0.0以降であることを確認してください。
github.com
f:id:bluebirdofoz:20200216035726j:plain

2.ダウンロードしたパッケージを Unity プロジェクトにインポートします。
f:id:bluebirdofoz:20200216035736j:plain

3.メニューバーから NuGet -> Manage NuGet Packages をクリックします。
f:id:bluebirdofoz:20200216035746j:plain

4.[検索]ボックスに[Microsoft.MixedReality.Toolkit]と入力します。
f:id:bluebirdofoz:20200216035755j:plain

5.以下の MRTK コアパッケージを選択して[Install]します。
Microsoft.MixedReality.Toolkit.Foundation - MRTKのコアパッケージ
f:id:bluebirdofoz:20200216035804j:plain

6.以下の MRTK オプションパッケージを必要ならば任意に選択して[Install]します。
Microsoft.MixedReality.Toolkit.Examples - 全てのサンプルを含むパッケージ。
Microsoft.MixedReality.Toolkit.Extensions - 拡張サービスやデータプロバイダーを含むパッケージ。
Microsoft.MixedReality.Toolkit.Tools - MRTKに付属する一部のツール(ビルドウィンドウなど)が含まれています。
f:id:bluebirdofoz:20200216035924j:plain

これで MixedRealityToolkit の追加は完了です。
f:id:bluebirdofoz:20200216035936j:plain

MRTK NuGetパッケージの更新

上記の手順1,2はプロジェクトに対して1回だけ実行する必要があります。
新しいパッケージが NuGet.org(プレリリースを含む) で利用可能になったら、以下の手順を実行します。

1.メニューバーから NuGet -> Manage NuGet Packages をクリックします。
f:id:bluebirdofoz:20200216035946j:plain

2.[Updates]タブに切り替えます。
 最新のプレリリースバージョンを取得する場合は[Show Prerelease]ボックスをオンにします。
f:id:bluebirdofoz:20200216035956j:plain

3.必要なパッケージを[Update]します。
 既にパッケージが最新の場合はパッケージが表示されません。
f:id:bluebirdofoz:20200216040006j:plain

NuGetパッケージの考慮事項

NuGet パッケージとしての MRTK のリリースは試験中の新しい配信メカニズムです。
NuGet の MRTK を使用するかどうかを選択する際には、考慮すべき利点と注意事項がいくつかあります。

.unitypackageまたはソースからNuGetへの移行(まだサポートされていません)

NuGet パッケージはスクリプトファイルではなく、コンパイルされたバイナリで構成され、C#スクリプトのアセット識別子が異なります。
そのため、MRTK パッケージのプレハブなどは適切なコンパイル済みスクリプトを参照するように更新されています。

MRTK の .unitypackage またはソースバージョンを使用するプロジェクトを利用する場合、ターゲットを変更する必要があります。
これはまだサポートされたシナリオではありません。

コンパイル済みバイナリ(NuGet)とソースファイル(.unitypackage)

NuGet パッケージにはスクリプトの代わりにコンパイルされたバイナリが含まれているため、2つの大きな利点があります。
コンパイル時間の短縮
Visual StudioC#プロジェクトファイルが少ない

MixedRealityToolkitのデバッグ

Unity および VisualStudioTools forUnity には、PDB を VisualStudioDebugger で簡単にデバッグできないという既知の問題があります。
そのため、パッケージには PDB とソースが埋め込まれていますが、DLL のデバッグはローカルでビルドされた場合にのみ可能です。
MSBuildForUnity の一部としてビルドされている回避策がありますが、それは後々更新されます。

NuGetパッケージをローカルでビルドする

MRTK の最新ソースを使用して NuGet パッケージをローカルでビルドし、それを取得するように NuGetForUnity を構成できます。

1.最新のMRTKソースをダウンロードします。
github.com
f:id:bluebirdofoz:20200216040034j:plain

2.scripts\packaging\createnugetpackages.ps1 スクリプトpowershell で実行します。
・実行例:.\createnugetpackages.ps1 -UnityDirectory "C:\Program Files\Unity\Hub\Editor\2018.4.14f1\Editor" -Version 2.3.2
・-UnityDirectory:UnityインストールのEditorフォルダーを渡すことでフラグを指定します
・-Version:作成するパッケージのバージョンをx.x.x形式で指定します。バージョンが NuGet.org で利用可能なバージョンよりも高いことを確認してください
・権限エラーが発生する場合は Set-ExecutionPolicy Unrestricted -Scope Process などを実行して権限設定を変更します。
f:id:bluebirdofoz:20200216040044j:plain

3.ビルドが成功したら目的のプロジェクトを開き、メニューの Edit -> Preferences をクリックします。
f:id:bluebirdofoz:20200216040055j:plain

4.[NuGet for Unity]タブを開きます。[Add New Source]ボタンをクリックします。
f:id:bluebirdofoz:20200216040106j:plain

5.[source_path]をリポジトリの /NuGet/artifacts パスに置き換えます。[Save]ボタンをクリックして変更を保存します。
f:id:bluebirdofoz:20200216040117j:plain

6.更新プロセスに従ってパッケージを更新します。
 メニューバーから NuGet -> Manage NuGet Packages をクリックします。
f:id:bluebirdofoz:20200216040129j:plain

7.[Updates]タブに切り替えます。
 [検索]ボックスに[Microsoft.MixedReality.Toolkit]と入力します。
f:id:bluebirdofoz:20200216040139j:plain

8.ビルドしたパッケージバージョンに[Update]します。
f:id:bluebirdofoz:20200216040149j:plain

9.ビルドバージョンが同じ場合は Assets/Packages フォルダーを削除して、NuGetForUnityにパッケージを復元させます。

補足

筆者環境では createnugetpackages.ps1 のビルドでエラーが発生し、ビルドできませんでした。
エラーログを確認するに Visual Studio の Enterprise が必要かもしれません。
f:id:bluebirdofoz:20200216040205j:plain

C:\Program Files\dotnet\sdk\3.1.100\Sdks\Microsoft.NET.Sdk\Sdk\Sdk.targets(37,3): error MSB4019: インポートされたプロジェクト "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.targets" が見つかりませんでした。