【HoloLens】MRTKv2.3からMRTKv2.4へアップデートする

# MRTKv2.3からMRTKv2.4へアップデートする
<img width="889" alt="スクリーンショット 2020-06-10 10.22.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/3a7d945c-c803-2674-7169-f9ec04000a6e.png">


## MRTKのアップデート

公式のリファレンスにアップデート方法が記載されていますが、そちらを参考に実際にアップデートを行いたいと思います。

また、今回はUnityのAssetファイルを更新する方法ですので、NuGet packagesでの更新方法は公式のリファレンスを参考ください。

新しいButton Config Helperなどを使うにはmigration toolという機能を使い、Assetないのアップデートを行う必要があります,その際に既存のManipulationHandlerが更新されていないなどのこともありますので、ハマったところを備忘録も含めて記載します。

https://microsoft.github.io/MixedRealityToolkit-Unity/version/releases/2.4.0/Documentation/Updating.html#updating-230-to-240

過去のMRTKからのバージョンアップなど、公式リファレンスには有益な情報がたくさん含まれています。
ぜひまだチェックされていない方はチェックしてみてください。

## 事前準備

- Unity , VisualStudioを閉じておく。
- バックアップの作成
- MRTKv2.4のダウンロード

下記サイトから以下4点をダウンロードする

- Microsoft.MixedReality.Toolkit.Unity.Examples.2.4.0.unitypackage
- Microsoft.MixedReality.Toolkit.Unity.Extensions.2.4.0.unitypackage
- Microsoft.MixedReality.Toolkit.Unity.Foundation.2.4.0.unitypackage
- Microsoft.MixedReality.Toolkit.Unity.Tools.2.4.0.unitypackage

https://github.com/microsoft/MixedRealityToolkit-Unity/releases
<img width="817" alt="スクリーンショット 2020-06-10 10.48.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/4b12cb2d-4391-e71f-8ca9-4e7a2aa952ad.png">


## アップデート手順

1. MRTKの削除
2. Libraryフォルダの削除
3. MRTKv2.4のインストール
4. Libraryのキャッシュを更新
5. Sceneのtoolkitの更新
6. migration tool

### 1 MRTKの削除

削除する項目

- [ ] MixedRealityToolkit
- [ ] MixedRealityToolkit.meta
- [ ] MixedRealityToolkit.Examples
- [ ] MixedRealityToolkit.Examples.meta
- [ ] MixedRealityToolkit.Extensions
- [ ] MixedRealityToolkit.Extensions.meta
- [ ] MixedRealityToolkit.Providers
- [ ] MixedRealityToolkit.Providers.meta
- [ ] MixedRealityToolkit.SDK
- [ ] MixedRealityToolkit.SDK.meta
- [ ] MixedRealityToolkit.Services
- [ ] MixedRealityToolkit.Services.meta
- [ ] MixedRealityToolkit.Staging
- [ ] MixedRealityToolkit.Staging.meta

以上です。

MixedRealityToolkit.Generatedは削除しないでください。同様にmetaファイルの削除も厳禁です。

### 2 Libraryフォルダの削除

UnityではAssetのキャッシュ情報(ファイルの移動であったりなど)をLibraryフォルダで管理しています。
そのフォルダもアップデートにともなって更新しなくてはいけません。

詳しくは公式のリファレンスをご参照ください。
https://docs.unity3d.com/ja/2020.1/Manual/BehindtheScenes.html


![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/1c1cddb6-6fe6-30d8-0120-35d557abc596.jpeg)

### 3 MRTKv2.4のインストール

UnityProjectを開き、MRTKをインストールする。※インストールには順番があります。

1. Microsoft.MixedReality.Toolkit.Unity.Foundation.2.4.0.unitypackage
2. Microsoft.MixedReality.Toolkit.Unity.Tools.2.4.0.unitypackage  
(オプション)
3. Microsoft.MixedReality.Toolkit.Unity.Extensions.2.4.0.unitypackage
4. Microsoft.MixedReality.Toolkit.Unity.Examples.2.4.0.unitypackage

上記の順番でインストールを行います。

![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/db813843-e2e7-637f-cc18-6363044f234f.jpeg)

私はいつもここからAssetのインポートを行っています。

### 4 Libraryのキャッシュを更新

インポートした後にもう一度Libraryの再構築を行う様です。
一度unityを落として、***2 Libraryフォルダの削除***　と同じことを行う様です。

### 5 Sceneのtoolkitの更新

再度 Unity を開いて今度はシーン上のToolKitの更新を行います。

削除する項目

- [ ] Mixed Reality Toolkit
- [ ] Mixed Reality Playspace

![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/af368cba-ffcb-59dc-7809-c1d168ddd967.jpeg)

Sceneに新しいToolkitを適用させます。

![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/e1a57c82-81f4-fea5-e97a-c6047b22ae67.jpeg)

以前までに使用していたカスタムプロファイルを適用させます。

![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363822/fab5a9d7-30be-93a8-094b-7a7ecef48a6f.jpeg)

以上で公式のアップデートは終了になります。

### 6 migration tool

新しくなったBounding box , Manipulation , Button Config helperを使用するには
既存のButtonなどの更新も必要になります。

MRTK2.3で使用していた
- Manipulation Handler
- Bounding Box Rig
はMigration toolを使用すると新しいコンポーネントに置き換わります。
その際に、AppBarなどで適用していたBoundingBoxのターゲットがインスペークター上から消えたりという現象が起こりますので、上記の2点のコンポーネントを操作しているscript、Inspectorの設定には注意が必要になります。

### 最後に

今回はMRTK2.3から2.4にアップデートすることを行いました。
SDKのアップデートは動かなくなったりなどのケースが多い印象ですが、今回のマイナーバージョンアップでは特にこれといった致命的な変更が行われていませんでしたので、すんなりと行うことができました。

次は、MRTKv2系でのNavMeshの動作環境を整えてみる。といった内容で投稿しようと考えています。

以上です。