1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MRTK(HoloLens2)ProjectのUnity 2021へ移行時のエラー対処(CS0269,CS0165)

Last updated at Posted at 2022-04-14

環境

  • Windows 10 Pro 21H2
  • MRTK 2.6.0 から 2.7.3 へ
  • Unity 2019.3 LTS から 2021.3 LTS へ
  • MixedReality-WebRTC 2.0.2

ご注意

  • 古くからあるプロジェクトのため、MixedReality-WebRTCを使っている
  • GitHubには、MR-WebRTC has been deprecated. と明記されている、利用時は注意
  • 筆者の環境では、移行がうまくいったように思えるが、まだ検証段階である、移行の判断は慎重に行うのがよいと思う

背景

  • Unity built-in VR(Unityの組み込みのVR機能)が2019で廃止
  • 移行するのが億劫で、長らく2019を使ってきたが、2019 LTSが終了するので移行を決意

「Unity built-in VR」形式から 「Unity XR Plug-in」形式への移行

  • Hierarchyにある既存の「MixedRealityToolkit」を削除して、公式サイトにある手順を実行したら、特にはまることなくうまくいった
  • しかし、別ところで、大きくはまったのでメモ

Unity 2021で、C#エラーチェックが厳格になった

  • 未割当の変数を使用する、未割当のout パラメーターを使用する、などをエラーにしてくれるようになった(ありがたい!)
- CS0165: Use of unassigned local variable
- CS0269: Use of unassigned out parameter '’

MRTK 2.7.2(おそらく、これ以前)だと、未割当のエラーが発生する

  • (エラーチェックの厳格化は、ありりがたい限りだが、移行のときにエラーが発生すると動揺を隠せない)
Library\PackageCache\com.microsoft.mixedreality.toolkit.tools@8eafd83ed930\MSBuild\Scripts\Utilities.cs(132,17): error CS0269: Use of unassigned out parameter 'guid'
Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@6e9ce41f130d\SDK\Features\UX\Scripts\BoundsControl\BoundsControl.cs(939,54): error CS0165: Use of unassigned local variable 'colliderByTransform'
Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@6e9ce41f130d\SDK\Features\UX\Scripts\BoundsControl\BoundsControl.cs(947,54): error CS0165: Use of unassigned local variable 'rendererBoundsByTransform'
Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@6e9ce41f130d\SDK\Features\UX\Scripts\BoundingBox\BoundingBox.cs(1906,54): error CS0165: Use of unassigned local variable 'colliderByTransform'
Library\PackageCache\com.microsoft.mixedreality.toolkit.foundation@6e9ce41f130d\SDK\Features\UX\Scripts\BoundingBox\BoundingBox.cs(1914,54): error CS0165: Use of unassigned local variable 'rendererBoundsByTransform'
  • 以下のコミットで修正されている
  • このコミットが取り込まれたバージョンが、MRTK Ver.2.7.3

MRTK 2.7.3のインストール

  • MRTK 2.7.3にすれば無事解決なのだが、MRTK 2.7.3のインストールにひと手間必要だった
  • 手元にあった「MixedRealityFeatureTool-1.0.2104.4-Beta」を使って、MRTK 2.7.3 をインストールしようとしたが、なぜか2.7.2までしかリストに表示されない(筆者の環境だけかもしれない)
  • 本記事執筆時の最新「MixedRealityFeatureTool-1.0.2203.0-Preview」を使うと、MRTK 2.7.3をインストールできた
  • 「MixedRealityFeatureTool-1.0.2203.0-Preview」を使うと、MixedReality-WebRTCがリストに表示されない(3回くらい確認したが、やはりないと思う)
    • GitHubには、MR-WebRTC has been deprecated. と追記されているので、終了ということなのだろう
  • Beta版とPreview版の両方、使えば無事解決なのだが、そう簡単にいかせてくれない

MixedRealityFeatureToolのBeta版とPreview版の共存

  • 一度、Preview版を起動してしまうと、Beta版が正常動作しなくなる(つまり、MixedReality-WebRTCをインストールできなくなる)
  • 設定ファイルの構造が違うからと思われる
  • %appdata%\..\Local\MixedRealityFeatureTool 以下にあるファイルをバックアップ取って、削除すると
  • Beta版が再び正常動作するようになる
  • Beta版でMR-WebRTCをインストールして、その後、Preview版でMRTK 2.7.3をインストールという手順でうまくいった

MixedRealityFeatureTool BetaがなくてもMR-WebRTCをインストールできるように

  • deprecatedだとしても、デモ制作などで、MixedReality-WebRTCに頼る機会が今後もあるかもしれないので
    • 早く代替(Microsoft Meshなど)がリリースされればよいのだが
  • MixedRealityFeatureToolがなくても、MixedReality-WebRTCをインストールできるようにメモ
  • com.microsoft.mixedreality.webrtc-2.0.2.tgz ファイルを保存しておく
  • ProjectPath\Packages\MixedReality\ に配置する
  • manifest.json に以下の1行を追加
manifest.json
"com.microsoft.mixedreality.webrtc": "file:MixedReality/com.microsoft.mixedreality.webrtc-2.0.2.tgz",
  • パッケージマネージャー(UPM)管理にせずに、tgzファイルを解凍して、Assetsフォルダに入れてもよい
    • その場合、Editorの軽微なエラーが発生する、以下に対処方法を書いた

さいごに

  • MR-WebRTC has been deprecatedなので、次は、WebRTC部分の移行を検討しないといけない
  • 独自に開発するか、Unity WebRTCを待つか、Microsoft Meshを待つか熟考中だが、
  • ARM64対応したMicrosoft Meshで快適にリアルタイム通信ができる未来を望む
    • MixedReality-WebRTC は、ARM32bitしか対応していなく、いろいろ苦労した
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?