Unity 的建議設定

Unity 提供一組預設選項,通常是所有平臺的平均案例。 不過,Unity 提供可透過項目設定切換之混合實境的特定行為。

效能環境設定

低質量設定

請務必將 Unity 品質設定 修改為 「非常低 」,讓應用程式在適當的幀速率執行並執行良好,特別是針對 HoloLens 開發。 為了在沉浸式頭戴式裝置上進行開發,視桌面提供VR體驗的規格而定,一個裝置仍可達到不具最低質量參數的幀速率。

在 Unity 2019 LTS+ 中,您可以移至 [編輯>項目設定品質],然後按兩下向下箭號以設定 [非常低品質] 層級來設定項目>的質量等級。

光源設定

與質量場景設定類似,請務必為 Mixed Reality 應用程式設定最佳光源設定。 在 Unity 中,通常會對您的場景產生最大效能影響的光源設定是 即時全域照明。 您可以移至 [視窗>轉譯>光源設定>] [即時全域照明] 來關閉全域照明。

還有另一個光源設定: 已製作全球照明。 此設定可在沉浸式頭戴式裝置上提供高效能且視覺上的結果,但不適用於 HoloLens 開發。 由於未知和變更的環境本質,所以僅針對靜態 GameObjects 計算已製作全域照明,在 HoloLens 場景中找不到。

如需詳細資訊 ,請參閱 Unity 的全域照明

注意

即時全域照明針對每個場景設定的 ,因此開發人員必須為其專案中的每個 Unity 場景儲存此屬性。

單一傳遞實例轉譯路徑

在 Mixed Reality 應用程式中,場景會轉譯兩次:每個眼睛一次。 相較於傳統的 3D 開發,這實際上會將需要計算的工作量加倍。 請務必在 Unity 中選取最有效率的轉譯路徑,以節省 CPU 和 GPU 時間。 單一傳遞實例轉譯會將混合實境應用程式的 Unity 轉譯管線優化;建議您針對每個項目預設啟用此設定。

若要在 Unity 專案中啟用這項功能

  1. 開啟 OpenXR 設定 (移至 [編輯>項目設定>] [XR 外掛程式管理>OpenXR ]) 。
  2. 從 [轉譯模式] 下拉功能表中選取 [單一傳遞實例]。

如需此轉譯方法的詳細資訊,請閱讀 Unity 的下列文章。

注意

如果開發人員已經有非針對執行個體撰寫的現有自訂著色器,就會發生單通道執行個體化轉譯的一個常見問題。 啟用這項功能之後,開發人員可能會注意到,有些 GameObject 只會在單一眼球中轉譯。 這是因為相關聯的自訂著色器沒有適當的執行個體屬性。

如需解決此問題的方法,請參閱 Unity 中的適用於 HoloLens 的單通道立體聲轉譯

啟用深度緩衝區共用

若要從使用者認知達到更好的全像投影穩定性,建議您在 Unity 中啟用 深度緩衝區共用 屬性。 藉由開啟此功能,Unity 會與 Windows Mixed Reality 平臺共用應用程式所產生的深度地圖。 然後,平臺可以針對應用程式轉譯的任何指定畫面,更妥善地優化場景的全像投影穩定性。

若要在 Unity 專案中啟用這項功能

  1. 開啟 OpenXR 設定 (移至 [編輯>項目設定>] [XR 外掛程式管理>OpenXR ]) 。
  2. 從 [深度提交模式] 下拉功能表中選取 [深度 16 位]。

針對 HoloLens 開發,特別建議使用 16 位深度緩衝區設定。 相較於24位選取16位,將會大幅降低頻寬需求,因為需要移動/處理的數據較少。 也就是說,優化具有特定成本。 請確定您瞭解下列 重要 方塊中提及的含意。

為了讓 Windows Mixed Reality 平臺優化全像投影穩定性,它依賴深度緩衝區來精確且符合螢幕上任何轉譯的全像投影。 因此,在開啟深度緩衝區共享的情況下,轉譯色彩也會呈現深度時很重要。 在 Unity 中,大部分的不透明或 TransparentCutout 材質預設會呈現深度,但透明和文字物件不會呈現深度,雖然這相依於著色器和其他因素。

如果使用 Mixed Reality 工具組標準著色器,則為透明物件呈現深度:

  1. 選取使用 MRTK 標準著色器的透明材質,然後開啟 [偵測器編輯器] 視窗
  2. 選取深度緩衝區共用警告內的 [立即修正 ] 按鈕。 您也可以將轉譯模式設定為 [自定義],以手動執行此動作;然後將 [模式] 設定為 [透明],最後將 [深度寫入] 設定為 [開啟]

重要

當變更這些值以及相機的近/遠平面設定時,開發人員應該注意 Z 衝突。 當兩個遊戲對象嘗試轉譯為相同的圖元,而且由於深度 (緩衝區的精確度限制,也就是 z 深度) ,Unity 無法辨識另一個物件前面有哪一個物件時,就會發生 Z-Fighting。 開發人員會在兩個遊戲對象之間閃爍,因為它們會針對相同的 Z 深度值 進行對抗 。 這可以藉由切換至24位深度格式來解決,因為每個物件從相機的 z 深度計算值範圍會較大。

不過,建議您特別針對 HoloLens 開發,將相機的近和遠平面修改為較小的範圍,並保留 16 位深度格式。 Z 深度會以非線性方式對應至鄰近和遠距相機平面的值範圍。 您可以在場景中選取 主要相機 ,然後在 [ 偵測器] 底下,變更 [近 & 遠裁剪平面 ] 值,以減少其範圍 (亦即從 1000m 到 100m 或其他 x 值等 )

重要

Unity 不會在使用16位深度格式時建立樣板緩衝區。 因此,除非選取 24 位深度格式,否則某些 Unity UI 效果和其他樣板必要效果將無法運作,這會建立 8 位樣板緩衝區

建置 IL2CPP

Unity 已淘汰 .NET 腳本後端的支援,因此建議開發人員針對其 UWP Visual Studio 組建使用 IL2CPP 。 雖然這帶來各種優點,但從 Unity for IL2CPP 建置 Visual Studio 解決方案的速度可能會比舊的 .NET 方法慢。 因此,強烈建議遵循建置 IL2CPP 的最佳做法,以節省開發反覆項目的時間。

  1. 每次將專案建置至相同的目錄,再於該處重複使用預先建置的檔案,以利用累加建置
  2. 停用專案的反惡意代碼軟體掃描 & 建置資料夾
    • 在您的 Windows 10 設定應用程式下開啟病毒 & 威脅防護
    • 選取 [病毒 & 威脅防護設定底下的 [管理設定]
    • 選取 [排除專案] 區段下的 [新增或移除排除專案]
    • 選取 [新增排除專案 ],然後選取包含 Unity 專案程式代碼和建置輸出的資料夾
  3. 使用 SSD 進行建置

如需詳細資訊,請參閱 優化 IL2CPP 的建置時間

注意

此外,設定快取伺服器可能會有幫助,對於有大量資產 (排除指令檔) 或不斷變更場景/資產的 Unity 專案來說,更是如此。 開啟專案時,Unity 會將符合資格的資產以內部快取格式儲存在開發機器上。 項目必須重新匯入,因此修改時必須加以重新處理。 此程序可以執行一次後就儲存在快取伺服器中,之後再與其他開發人員共用以節省時間,而不是每位開發人員都在本機處理新變更的重新匯入工作。

發佈屬性

全像攝影啟動顯示畫面

HoloLens 具有行動類別的 CPU 和 GPU,這表示應用程式可能需要較長的時間才能載入。 當應用程式正在載入時,使用者只會看到黑色,因此他們可能會想知道會發生什麼事。 若要在載入期間放心,您可以新增全像攝影啟動顯示畫面。

若要切換全像攝影啟動顯示畫面:

  1. 移至 [編輯>項目設定>播放機 ] 頁面
  2. 選取 [ Windows 市集] 索引標籤,然後開啟 [ 啟動顯示影像] 區段
  3. Windows 全像攝影全像攝影 > 啟動顯示影像 屬性下套用您的影像。
    • 切換 [ 顯示 Unity 啟動顯示畫面 ] 選項將會啟用或停用 Unity 品牌啟動顯示畫面。 如果您沒有 Unity Pro 授權,則一律會顯示 Unity 品牌啟動顯示畫面。
    • 如果套用 全像攝影啟動顯示影像 ,則一律會顯示是否啟用或停用 [顯示 Unity 啟動顯示畫面] 複選框。 指定自定義全像攝影啟動顯示影像僅適用於具有 Unity Pro 授權的開發人員。
顯示 Unity 啟動顯示畫面 全像攝影啟動顯示影像 行為
開啟 顯示預設 Unity 啟動顯示畫面 5 秒,或直到載入應用程式為止,只要較長的時間。
開啟 Custom 顯示自定義啟動顯示畫面 5 秒,或直到載入應用程式為止,只要較長的時間。
關閉 在載入應用程式之前,顯示透明黑色 (沒有任何) 。
關閉 Custom 顯示自定義啟動顯示畫面 5 秒,或直到載入應用程式為止,只要較長的時間。

如需詳細資訊 ,請參閱 Unity 的啟動顯示畫面檔

追蹤遺失

混合實境頭戴式裝置取決於查看其周圍的環境,以建構 世界鎖定的座標系統,讓全像投影維持在位置。 當頭戴式裝置無法找到自己的世界時,頭戴式裝置即表示 遺失追蹤。 在這些情況下,相依於世界鎖定座標系統的功能,例如空間階段、空間錨點和空間對應,無法運作。

如果追蹤遺失,Unity 的預設行為是停止轉譯全像投影、暫停 遊戲迴圈,並顯示追蹤遺失通知,以方便用戶注視。 您也可以以追蹤遺失影像的形式提供自定義通知。 對於相依於追蹤其整個體驗的應用程式,讓 Unity 完全處理此作業,直到重新取得追蹤為止。 開發人員可以提供自定義影像,以在追蹤遺失期間顯示。

若要自訂追蹤遺失的影像:

  1. 移至 [編輯>項目設定>播放機 ] 頁面
  2. 選取 [ Windows 市集] 索引標籤,然後開啟 [ 啟動顯示影像] 區段
  3. Windows 全像攝影 > 追蹤遺失影像 屬性下套用您的影像。

退出退出自動暫停

某些應用程式可能不需要追蹤 (例如 僅限方向的應用程式 ,例如 360 度視訊查看器) ,或可能需要在追蹤遺失時繼續處理不中斷。 您可以退出退出預設的追蹤行為遺失,但您必須負責隱藏/停用任何物件,這不會在追蹤遺失案例中正確轉譯。 在大部分情況下,建議在該案例中轉譯的唯一內容是內文鎖定的內容,以主要相機為中心。

若要退出離開自動暫停行為:

  1. 移至 [編輯>項目設定>播放機 ] 頁面
  2. 選取 [ Windows 市集] 索引標籤,然後開啟 [ 啟動顯示影像] 區段
  3. 修改 [Windows 全像攝影 > 追蹤遺失暫停] 和 [顯示影像] 複選框。

追蹤遺失事件

若要定義追蹤遺失時的自定義行為,請處理全域 追蹤遺失事件

功能

若要讓應用程式利用某些功能,它必須在其指令清單中宣告適當的功能。 指令清單宣告可以在 Unity 中建立,使其包含在未來的項目匯出中。

您可以透過下列方式為 Mixed Reality 應用程式啟用功能:

  1. 移至 [編輯>項目設定>播放機 ] 頁面
  2. 選取 [ Windows 市集] 索引標籤,開啟 [ 發佈設定 ] 區段,然後尋找 [功能 ] 列表

開啟全像攝影應用程式常用 API 的適用功能如下:

功能 需要功能的 API
SpatialPerception SurfaceObserver
網路攝影機 PhotoCapture 和 VideoCapture
PicturesLibrary / VideosLibrary PhotoCapture 或 VideoCapture,分別 (儲存擷取的內容時)
麥克風 擷取音訊) 、DictationRecognizer、GrammarRecognizer 和 KeywordRecognizer 時,VideoCapture (
InternetClient DictationRecognizer (並使用 Unity Profiler)

另請參閱