適用於 Unity 的 Google Cardboard 快速入門導覽課程

本指南將說明如何使用 Unity 的 Unity 專用 Google Cardboard XR 外掛程式,自行建立虛擬實境 (VR) 體驗。

你可以使用 Cardboard SDK,讓手機變成 VR 平台。智慧型手機可以顯示具有立體聲轉譯的 3D 場景、追蹤並回應頭部動作,以及偵測使用者何時按下檢視器按鈕,藉此與應用程式互動。

要開始使用,您將使用 HelloCardboard,這款示範遊戲展示 Cardboard SDK 的核心功能。在遊戲中,使用者會環顧虛擬世界來尋找及收集物件。以及如何進行以下操作:

  • 設定開發環境
  • 下載並建構試用版應用程式
  • 掃描 Cardboard 觀影盒的 QR code,儲存參數
  • 追蹤使用者的頭部移動情形
  • 設定雙眼的正確變形,呈現立體影像
  • 開啟及關閉虛擬實境模式

設定開發環境

軟體需求:

匯入 SDK 並建立新專案

請按照下列步驟匯入 Unity SDK 並建立新專案。

  1. 開啟 Unity 並建立新的 3D 專案。
  2. 在 Unity 中,依序前往「Window」 >「Package Manager」
  3. 點選「+」+,然後選取「從 Git 網址新增套件」+
  4. https://github.com/googlevr/cardboard-xr-plugin.git 貼到文字輸入欄位中。
    套件應新增至已安裝的套件。
  5. 前往「適用於 Unity 的 Google Cardboard XR 外掛程式」套件。在「範例」專區中,選擇「匯入至專案」
    範例資產應載入至 Assets/Samples/Google Cardboard/<version>/Hello Cardboard

設定 HelloCardboard 場景

  1. 前往 Assets/Samples/Google Cardboard/<version>/Hello Cardboard/Scenes,選取「Add Open Scenes」,然後選擇「HelloCardboard」,開啟範例場景。
  2. 開啟「圖層」選單,然後選取「編輯圖層...」
  3. 定義名為「互動式」的新圖層。
  4. 按一下「Treasure」 GameObject,「Inspector」視窗開啟。將其圖層設為「互動式」。如果系統顯示彈出式視窗,詢問您是否要一併為所有子項物件將圖層設為互動式,請按一下「Yes, change children」(是,變更子項)。
  5. 依序按一下「Player」>「Camera」>「CardReticlePointer」 GameObject,開啟「 Inspector」視窗。在「Carboard reticle 指標」指令碼中,選取「Interactive」做為「Reticle Interaction Layer Mask」

設定 Android 專案

依序前往「File」 >「Build Settings」

  1. 選取「Android」,然後選擇「Switch Platform」
  2. 選取「Add Open Scenes」,然後選擇「HelloCardboard」。

播放器設定

解析度與呈現方式

依序前往「Project Settings」 >「Player」 >「Resolution and Presentation」

  1. 將「Default Orientation」設為「Landscape Left」或「Landscape Right」
  2. 停用「Optimized Frame Pacing」

其他設定

依序前往「Project Settings」 >「Player」 >「Other Settings」

  1. 選擇 OpenGLES2OpenGLES3Vulkan,或是在「Graphics API」中任意組合兩者。
  2. 在「Minimum API 級別」中選取 Android 8.0 'Oreo' (API level 26) 或更高版本。
  3. 在「目標 API 級別」中選取 API level 33 或更高版本。
  4. 在「Scripting Backend」中選取 IL2CPP
  5. 在「目標架構」中選擇 ARMv7ARM64 或兩者並用來選取所需架構。
  6. 在「Internet Access」(網際網路存取權) 中選取 Require
  7. 在「Package Name」下方指定公司網域。
  8. 如果選取 Vulkan 做為 Graphics API
    • 在「Vulkan 設定」中,取消勾選「在算繪期間套用畫面旋轉功能」核取方塊。
    • 如果 Unity 版本為 2021.2 以上,請在「Texture compression format」(紋理壓縮格式) 中選取 ETC2
  9. 如果 Unity 版本為 2023.1 以上版本,請在「Application Entry Point」中選取 Activity 並清除 GameActivity

發布設定

依序前往「Project Settings」 >「Player」 >「Publishing Settings」

  1. 在「Build」區段中,選取 Custom Main Gradle TemplateCustom Gradle Properties Template
  2. 請在 Assets/Plugins/Android/mainTemplate.gradle 的依附元件區段中加入以下幾行:

      implementation 'androidx.appcompat:appcompat:1.6.1'
      implementation 'com.google.android.gms:play-services-vision:20.1.3'
      implementation 'com.google.android.material:material:1.6.1'
      implementation 'com.google.protobuf:protobuf-javalite:3.19.4'
    
  3. Assets/Plugins/Android/gradleTemplate.properties 中新增下列指令行:

      android.enableJetifier=true
      android.useAndroidX=true
    

XR 外掛程式管理設定

依序前往「專案設定」 >「XR 外掛程式管理」

  1. 在「外掛程式供應商」底下選取 Cardboard XR Plugin

建構您的專案

依序前往「File」 >「Build Settings」

  1. 選取「Build」,或選擇裝置,然後選取「Build and Run」

設定 iOS 專案設定

依序前往「File」 >「Build Settings」

  1. 選取「iOS」iOS,然後選擇「Switch Platform」iOS
  2. 選取「Add Open Scenes」,然後選擇「HelloCardboard」。

播放器設定

解析度與呈現方式

依序前往「Project Settings」 >「Player」 >「Resolution and Presentation」

  1. 將「Default Orientation」設為「Landscape Left」或「Landscape Right」

其他設定

依序前往「Project Settings」 >「Player」 >「Other Settings」

  1. 在「相機用量說明」中,寫入 Cardboard SDK requires camera permission to read the QR code (required to get the encoded device parameters).
  2. 在「目標最低 iOS 版本」中,寫入 12.0
  3. 在「Package Name」下方指定公司網域。

XR 外掛程式管理設定

依序前往「專案設定」 >「XR 外掛程式管理」

  1. 在「外掛程式供應商」底下選取 Cardboard XR Plugin

建構您的專案

依序前往「File」 >「Build Settings」

  1. 選取「Build」或「Build and Run」

正在重新置中

Cardboard SDK 可讓您使用 Recenter() 將頭部追蹤器重新置中。

請按照下列步驟使用範例應用程式試用:

  1. 將裝置移到您要重新置中的位置 (當做新的前向頭姿勢)。
  2. 手持 Cardboard 裝置的觸發程序至少 3 秒。
  3. 放開觸發條件。
  4. 初始姿勢現在是相機所指的方向。

開啟及關閉 VR 模式

Unity XR Plugin Management API 可讓您開啟或關閉 Unity 適用的 Google Cardboard XR 外掛程式的 VR 模式。如需使用者說明文件和使用範例,請參閱 Unity 的使用者說明文件

HelloCardboard 範例中的 VrMode 場景會顯示上述 API 的基本用法。在這類場景中,輕觸「Exit」 即可關閉 VR 模式,而且只要輕觸畫面上的任何位置就能再次開啟。如要進一步瞭解執行方式,請參閱 VrModeController.cs

後續步驟