[Unity #14] 死闘を越えて 2022.3 LTSで築く『確実に動く』Quest 2開発環境構築

はじめに

前回の記事の続き。

翌朝、再度Unityを立ち上げ、起動するとパッケージマネージャーで大量のエラー…。

昨日、大元のUnityの設定やpackageなどを消したせいかと思い、レジストリをすべて削除したり、環境変数を作成したり、.upmconfig.tomlを作成したりとあらゆる手度つくしましたが解決せず。

何をやっても解決しないので再インストール、それでも解決せず…。

どうも、Unityのサーバで最新バージョンで署名データが切れる不具合が出てる?ようで、どうしようもなし。

それを踏まえて、AIの提案で 「安定している 2022.03を使ってはどうか?」 という意見を聞いて、Uinityエディターをダウングレード。

その結果、嘘のようにpackage関係のエラーは消え、VRの実装テストまであっという間に終わりました。

最新の方がいいと思い、6000を使い続けてましたが、今後は安定してる2022.03の方を使うかもしれません。

とりあえず、駆け足で実装した、VR情報をメモとしてまとめてみます。

5時間のデバッグ、数分の実装

日曜日の午前中、私は「最新」という名の地雷原にいました。Unity 6(6000シリーズ)で起きた、本社側の証明書期限切れに伴う署名エラー。OSの深部まで潜り、環境変数やレジストリを書き換えても解決しない絶望。

しかし、答えはシンプルでした。「枯れた技術(安定版)」に頼ること。

Unity 2022.3.62f3 LTSに切り替えた瞬間、あれほど私を苦しめた赤い「!」は消え、おとなしい羊のようなエディタが戻ってきました。「当たり前のことが、嬉しい」。そんな宇宙の始まりのような、最小構成からのVRセットアップ手順を記録します。

1. 安定の土台:Unity 2022.3 LTS の選択

「最新こそが最強である」——開発者なら誰もが陥るこの信仰が、今回最大の罠でした。

私が日曜日の午前中の5時間を費やして学んだのは、「動かない最新」よりも「確実に動くクラシック」の方が、創造性を100倍加速させるという事実です。

Unity 6(6000シリーズ)という地雷原

当初、私はリリースされたばかりの Unity 6 (6000.3.5f1) を選択しました。 しかし、そこで待っていたのは、コードを書く以前の「環境の崩壊」でした。

  • 不可避の署名エラー (UUM-133005): Unity 6から導入された厳格なパッケージ検証システムが、Unity本社の期限切れ証明書を「不正」と誤認。
  • 絶望のPackage Manager: 何をしても赤い「!」が消えず、VR開発に必須のプラグインすらインストールできない状態に。
  • 5時間の徒労: レジストリを削り、環境変数を操り、OSの深部まで潜りましたが、本社側のミスという「ユーザーにはどうしようもない壁」に阻まれました。

2022.3 LTS という「安住の地」への帰還

死闘の末、 Unity 2022.3.62f3 LTS へのダウングレードを決断。

  • 枯れた技術の強み: 2022.3は数え切れないほどのアップデートを経て、バグが徹底的に取り除かれた「完成形」です。
  • 過剰な検証の不在: 最新版のような「自爆気味な検証システム」に依存していないため、今回の世界同時多発エラーの呪いを受けずに済みます。
  • VR開発のデファクトスタンダード: Meta Quest 2向けのプラグインやアセットの多くは、この2022.3で最も安定して動作するように設計されています。

「最新」を捨てる勇気が、世界を創る

インストールが完了し、エディタを開いた瞬間。 Package Manager に並ぶ「平和なリスト」を見た時、ようやく私の日曜日は始まりました。

もしあなたが「原因不明のパッケージエラー」で貴重な休日を溶かしているなら、迷わず 2022.3.62f3 を選んでください。 最新版の派手なロゴはありませんが、あなたの意図を裏切らない「実直な相棒」になってくれるはずです。

2. XR Plugin Management の導入:VRの「心臓」を動かす

プロジェクトが立ち上がったら、まず最初に行うべき儀式があります。それは、Unityという汎用エンジンに「VRという魂」を吹き込むためのゲートウェイ、XR Plugin Management の導入です。

なぜこれが「心臓」なのか

Unity単体では、PCのモニターに映像を映すことしかできません。VRゴーグルのレンズ越しに広がる3D空間、そして頭の動きに追従する視界。これらを実現するための低レイヤーな制御を一手に引き受けるのが、このプラグインです。

午前中の Unity 6 環境では、この「心臓」をインストールしようとした瞬間に**「署名が正しくない」という致命的な拒絶反応**(エラー)が発生し、一歩も前に進めませんでした。しかし、安定版の 2022.3 では、驚くほど静かに、そして確実に応えてくれます。

導入の手順

  1. Project Settings を開く: メニューの Edit > Project Settings を選択します。
  2. XR Plugin Management を選択: 左側のメニューリストの一番下にひっそりと佇む XR Plugin Management をクリックします。
  3. インストールの実行: 画面中央に表示される Install XR Plugin Management ボタンをクリックしてください。

ボタンを押すと、数秒から数十秒のロードが走ります。 Unity 6 であれば、ここでコンソールに真っ赤な文字が並び、「パッケージが検証できませんでした」という冷たい宣告が下されていました。

ですが、2022.3 では違います。ロードが終われば、そこにはエラー一つない、真っ新なチェックボックスのリストが現れます。

3. 業界標準「OpenXR」のセットアップ:デバイスの垣根を超える

心臓が動き出したら、次は「どの言語でデバイスと会話するか」を決めます。かつては各メーカー独自のプラグイン(Oculus用、SteamVR用など)が乱立していましたが、現在はOpenXRという共通言語を選択するのが世界標準です。

「Oculus」ではなく「OpenXR」を選ぶ理由

以前のプロジェクトでは「Oculus」プラグインを選んでいた方も多いかもしれません。しかし、最新の Unity 2022.3 環境では OpenXR が推奨されています。これにより、特定のデバイスに縛られず、Meta Quest 2 でも Valve Index でも、同じコードで動く「ユニバーサルな VR 空間」の土台が手に入ります。


セットアップの手順:警告を「Fix」する快感

  1. OpenXR にチェックを入れる:

XR Plug-in Management の画面で、PCマークのタブにある OpenXR にチェックを入れます。

  1. 黄色い警告(Warning)への対処: チェックを入れると、OpenXR の横に黄色い警告アイコンが表示されます。これはエラー(赤)ではなく、「設定が足りないよ」という Unity からの親切なアドバイスです。

  2. Project Validation の魔法: 左メニューの Project Validation を開きます。そこには「Input System を有効にする必要がある」といった項目が並んでいますが、心配はいりません。

  • Fix All ボタンを迷わずクリックしてください。
  • Unity が自動で必要なパッケージを入れ、再起動の確認ダイアログを出してくれます。この「勝手に直してくれる感」は、午前中の手動デバッグ地獄とは正反対の快適さです。

最後の仕上げ:手に「形」を与える

すべてを Fix しても、最後の一つだけ警告が残ります。それは「どのコントローラーを使うか決まっていない」という警告です。

  1. 左メニューの OpenXR 設定画面を開きます。
  2. Enabled Interaction Profiles という空のリストの右下にある + ボタンを押します。
  3. Oculus Touch Controller Profile を選択します。

これで、Unity は「あ、Meta Quest のあのコントローラーを使うんだな」と完全に理解します。

忌まわしき「赤」から、希望の「なし」へ

設定が終わると、あんなに騒がしかった Project Validation の画面からすべてのアイコンが消え、静寂が訪れます。

「エラーのない、平和な設定画面」。

4. 身体と魂:XR Interaction Toolkit ― 相互作用の自動化

OpenXRで「通信の規格」が決まったら、次はその規格をどう「体験」に変えるかを定義します。ここで登場するのが、XR Interaction Toolkit (XRI) です。これが、VR空間におけるあなたの「身体」と、物体に触れるための「知能」を司ります。

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

まずは、Unity公式が提供しているこの強力なツールキットを導入します。

  1. Package Manager を開く: メニューの Window > Package Manager を開きます。
  2. Unity Registry から検索: Packages の項目を Unity Registry に切り替え、検索窓に「interaction」と入力します。
  3. インストール: 最新の安定版(今回は 2.6.5)を選択し、Install ボタンをクリックします。

の画面のように、右側に説明が表示されれば準備完了です。

「Starter Assets」:ボタン設定の地獄を回避する

XRIをインストールしただけでは、まだ「身体」は空っぽです。本来なら、「コントローラーのAボタンを押した時に何が起きるか」という定義(Input Actions)を一つずつ手動で行わなければなりませんが、これこそがVR開発初心者が挫折する最大の「地雷」です。

これを一瞬で解決するのが、Starter Assets です。

  1. Samples タブを開く: Package Manager の XRI の説明画面にある Samples タブをクリックします。
  2. Starter Assets をインポート: 一番上にある Starter Assets の横の Import ボタンを押します。

のボタンをクリックすると、Projectフォルダ内に標準的なVR操作の設定ファイルがどっさりと展開されます。

なぜこれが「魂」なのか

この Starter Assets を入れることで、テレポート移動、物をつかむ、視点回転といった「VRで当たり前にできること」の設定がすべて手に入ります。

午前中に5時間をかけて環境と戦った私にとって、この「インポートボタン一つで設定が完了する」という事実は、まさに救済でした。もしこれを手動でやろうとすれば、さらに数時間が「ボタン名のタイピング」だけで消えていたことでしょう。

これで、「身体」と、それを動かすための「魂(初期設定)」が揃いました。次は、いよいよこれらを組み合わせて、ヒエラルキー上にあなたの分身を召喚します。

5. シーンの構築:XR Origin の召喚 ― 仮想世界への「肉体」の受肉

土台と魂(設定)が揃ったら、いよいよこの宇宙に「あなた自身」を召喚する番です。UnityにおけるVRの身体、それが XR Origin です。


ステップ1:旧世界のカメラを破棄する

Hierarchy(ヒエラルキー)に最初から存在する Main Camera は、モニターという「平面」を映すための古い時代の遺物です。VRの視点と衝突して不具合の原因になるため、右クリックで Delete して、潔く別れを告げましょう。

ステップ2:XR Origin (VR) の召喚

空になったヒエラルキーで右クリックし、 **XR > XR Origin (VR)** を選択します。

  • なぜ「(VR)」なのか?: Unity 2022.3(XRI 2.6.5)では、これが最新の Action-based(ボタン設定を自由に変えられる方式)を内包した「全部入りお買い得パック」の名称です。
  • 自動生成される知能: これを作成すると、身体(XR Origin)だけでなく、VR空間のルールを司る XR Interaction Manager も自動的に配置されます。

ステップ3:左右の手に「魂」を吹き込む(プリセット適用)

召喚されたばかりの XR Origin は、まだ「腕」があるだけで「指の動かし方」を知りません。ここで、先ほどインポートした Starter Assets を紐付けます。

  1. Hierarchy で LeftHand Controller を選択します。
  2. Inspector(インスペクター)の XR Controller (Action-based) コンポーネントのタイトル右端にある、「二本の横線(プリセット)」アイコンをクリックします。
  3. リストから XRI Default Left を選んでダブルクリックします。
  4. RightHand Controller も同様に、XRI Default Right を適用します。

これで、あなたの左右の手は Meta Quest 2 のコントローラー入力を正しく受け取れるようになりました。インスペクターにズラリと並んだ「Action」の項目が埋まっていく様子は、まさにロボットにOSをインストールするような快感があります。

午前中の Unity 6 環境では、この「Action」の一つ一つが署名エラーで真っ赤に染まっていました。しかし、今の 2022.3 環境では、すべてが青く(正常に)輝いています。

6.(Cube)を作る ― 実体と物理法則の付与

身体(XR Origin)が完成し、周囲を見渡せるようになったら、最後はこの世界に「触れられる実体」を誕生させます。ターゲットは、開発者の永遠の友、ただの Cube です。

今のままでは、Cubeはただそこにあるだけの「幽霊」のような存在ですが、コンポーネントを一つ足すだけで、あなたの手で掴み、投げられる「物理的な実体」へと進化します。


ステップ1:掴める機能の追加

  1. Hierarchy で、最初に配置した Cube を選択します。
  2. Inspector の一番下にある Add Component ボタンを押し、検索窓に「grab」と入力します。
  3. 表示された候補から XR Grab Interactable を選択して追加してください。

ステップ2:自動で宿る「物理法則」

ここが Unity の賢いところです。XR Grab Interactable を追加すると、Unity は「掴めるなら、当然重力も必要だよね」と判断し、自動的に Rigidbody(剛体) コンポーネントを一緒に付けてくれます。

  • Rigidbody: これにより、Cubeに「質量」と「重力」が備わります。投げれば放物線を描いて落ち、地面(Plane)に当たれば止まる。当たり前の物理現象が、ここでようやく成立します。
  • XR Grab Interactable: これがあなたの手(コントローラー)とCubeの橋渡し役になります。

動作確認

Air Link(無線)でPCと繋ぎ、再生ボタンを押す。 視界に広がるのは、白いPlaneと、一つのCube。

おわりに

Quest2 + Air Link(無線)でデスクトップを起動後、プレイボタンを押すことで、VRアプリがたちががります。

ただ、移動が出来ないです。

6000で作成したサンドボックスを、2022にどう移植するかというのが今後の課題ですね…。

果たしてできるのか。