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 專案中啟用這項功能
- 開啟 OpenXR 設定 (移至 [編輯>項目設定>] [XR 外掛程式管理>OpenXR ]) 。
- 從 [轉譯模式] 下拉功能表中選取 [單一傳遞實例]。
如需此轉譯方法的詳細資訊,請閱讀 Unity 的下列文章。
注意
如果開發人員已經有非針對執行個體撰寫的現有自訂著色器,就會發生單通道執行個體化轉譯的一個常見問題。 啟用這項功能之後,開發人員可能會注意到,有些 GameObject 只會在單一眼球中轉譯。 這是因為相關聯的自訂著色器沒有適當的執行個體屬性。
如需解決此問題的方法,請參閱 Unity 中的適用於 HoloLens 的單通道立體聲轉譯
啟用深度緩衝區共用
若要從使用者認知達到更好的全像投影穩定性,建議您在 Unity 中啟用 深度緩衝區共用 屬性。 藉由開啟此功能,Unity 會與 Windows Mixed Reality 平臺共用應用程式所產生的深度地圖。 然後,平臺可以針對應用程式轉譯的任何指定畫面,更妥善地優化場景的全像投影穩定性。
若要在 Unity 專案中啟用這項功能
- 開啟 OpenXR 設定 (移至 [編輯>項目設定>] [XR 外掛程式管理>OpenXR ]) 。
- 從 [深度提交模式] 下拉功能表中選取 [深度 16 位]。
針對 HoloLens 開發,特別建議使用 16 位深度緩衝區設定。 相較於24位選取16位,將會大幅降低頻寬需求,因為需要移動/處理的數據較少。 也就是說,優化具有特定成本。 請確定您瞭解下列 重要 方塊中提及的含意。
為了讓 Windows Mixed Reality 平臺優化全像投影穩定性,它依賴深度緩衝區來精確且符合螢幕上任何轉譯的全像投影。 因此,在開啟深度緩衝區共享的情況下,轉譯色彩也會呈現深度時很重要。 在 Unity 中,大部分的不透明或 TransparentCutout 材質預設會呈現深度,但透明和文字物件不會呈現深度,雖然這相依於著色器和其他因素。
如果使用 Mixed Reality 工具組標準著色器,則為透明物件呈現深度:
- 選取使用 MRTK 標準著色器的透明材質,然後開啟 [偵測器編輯器] 視窗
- 選取深度緩衝區共用警告內的 [立即修正 ] 按鈕。 您也可以將轉譯模式設定為 [自定義],以手動執行此動作;然後將 [模式] 設定為 [透明],最後將 [深度寫入] 設定為 [開啟]
重要
當變更這些值以及相機的近/遠平面設定時,開發人員應該注意 Z 衝突。 當兩個遊戲對象嘗試轉譯為相同的圖元,而且由於深度 (緩衝區的精確度限制,也就是 z 深度) ,Unity 無法辨識另一個物件前面有哪一個物件時,就會發生 Z-Fighting。 開發人員會在兩個遊戲對象之間閃爍,因為它們會針對相同的 Z 深度值 進行對抗 。 這可以藉由切換至24位深度格式來解決,因為每個物件從相機的 z 深度計算值範圍會較大。
不過,建議您特別針對 HoloLens 開發,將相機的近和遠平面修改為較小的範圍,並保留 16 位深度格式。 Z 深度會以非線性方式對應至鄰近和遠距相機平面的值範圍。 您可以在場景中選取 主要相機 ,然後在 [ 偵測器] 底下,變更 [近 & 遠裁剪平面 ] 值,以減少其範圍 (亦即從 1000m 到 100m 或其他 x 值等 )
建置 IL2CPP
Unity 已淘汰 .NET 腳本後端的支援,因此建議開發人員針對其 UWP Visual Studio 組建使用 IL2CPP 。 雖然這帶來各種優點,但從 Unity for IL2CPP 建置 Visual Studio 解決方案的速度可能會比舊的 .NET 方法慢。 因此,強烈建議遵循建置 IL2CPP 的最佳做法,以節省開發反覆項目的時間。
- 每次將專案建置至相同的目錄,再於該處重複使用預先建置的檔案,以利用累加建置
- 停用專案的反惡意代碼軟體掃描 & 建置資料夾
- 在您的 Windows 10 設定應用程式下開啟病毒 & 威脅防護
- 選取 [病毒 & 威脅防護設定底下的 [管理設定]
- 選取 [排除專案] 區段下的 [新增或移除排除專案]
- 選取 [新增排除專案 ],然後選取包含 Unity 專案程式代碼和建置輸出的資料夾
- 使用 SSD 進行建置
如需詳細資訊,請參閱 優化 IL2CPP 的建置時間 。
注意
此外,設定快取伺服器可能會有幫助,對於有大量資產 (排除指令檔) 或不斷變更場景/資產的 Unity 專案來說,更是如此。 開啟專案時,Unity 會將符合資格的資產以內部快取格式儲存在開發機器上。 項目必須重新匯入,因此修改時必須加以重新處理。 此程序可以執行一次後就儲存在快取伺服器中,之後再與其他開發人員共用以節省時間,而不是每位開發人員都在本機處理新變更的重新匯入工作。
發佈屬性
全像攝影啟動顯示畫面
HoloLens 具有行動類別的 CPU 和 GPU,這表示應用程式可能需要較長的時間才能載入。 當應用程式正在載入時,使用者只會看到黑色,因此他們可能會想知道會發生什麼事。 若要在載入期間放心,您可以新增全像攝影啟動顯示畫面。
若要切換全像攝影啟動顯示畫面:
- 移至 [編輯>項目設定>播放機 ] 頁面
- 選取 [ Windows 市集] 索引標籤,然後開啟 [ 啟動顯示影像] 區段
- 在 Windows 全像攝影全像攝影 > 啟動顯示影像 屬性下套用您的影像。
- 切換 [ 顯示 Unity 啟動顯示畫面 ] 選項將會啟用或停用 Unity 品牌啟動顯示畫面。 如果您沒有 Unity Pro 授權,則一律會顯示 Unity 品牌啟動顯示畫面。
- 如果套用 全像攝影啟動顯示影像 ,則一律會顯示是否啟用或停用 [顯示 Unity 啟動顯示畫面] 複選框。 指定自定義全像攝影啟動顯示影像僅適用於具有 Unity Pro 授權的開發人員。
顯示 Unity 啟動顯示畫面 | 全像攝影啟動顯示影像 | 行為 |
---|---|---|
開啟 | 無 | 顯示預設 Unity 啟動顯示畫面 5 秒,或直到載入應用程式為止,只要較長的時間。 |
開啟 | Custom | 顯示自定義啟動顯示畫面 5 秒,或直到載入應用程式為止,只要較長的時間。 |
關閉 | 無 | 在載入應用程式之前,顯示透明黑色 (沒有任何) 。 |
關閉 | Custom | 顯示自定義啟動顯示畫面 5 秒,或直到載入應用程式為止,只要較長的時間。 |
如需詳細資訊 ,請參閱 Unity 的啟動顯示畫面檔 。
追蹤遺失
混合實境頭戴式裝置取決於查看其周圍的環境,以建構 世界鎖定的座標系統,讓全像投影維持在位置。 當頭戴式裝置無法找到自己的世界時,頭戴式裝置即表示 遺失追蹤。 在這些情況下,相依於世界鎖定座標系統的功能,例如空間階段、空間錨點和空間對應,無法運作。
如果追蹤遺失,Unity 的預設行為是停止轉譯全像投影、暫停 遊戲迴圈,並顯示追蹤遺失通知,以方便用戶注視。 您也可以以追蹤遺失影像的形式提供自定義通知。 對於相依於追蹤其整個體驗的應用程式,讓 Unity 完全處理此作業,直到重新取得追蹤為止。 開發人員可以提供自定義影像,以在追蹤遺失期間顯示。
若要自訂追蹤遺失的影像:
- 移至 [編輯>項目設定>播放機 ] 頁面
- 選取 [ Windows 市集] 索引標籤,然後開啟 [ 啟動顯示影像] 區段
- 在 Windows 全像攝影 > 追蹤遺失影像 屬性下套用您的影像。
退出退出自動暫停
某些應用程式可能不需要追蹤 (例如 僅限方向的應用程式 ,例如 360 度視訊查看器) ,或可能需要在追蹤遺失時繼續處理不中斷。 您可以退出退出預設的追蹤行為遺失,但您必須負責隱藏/停用任何物件,這不會在追蹤遺失案例中正確轉譯。 在大部分情況下,建議在該案例中轉譯的唯一內容是內文鎖定的內容,以主要相機為中心。
若要退出離開自動暫停行為:
- 移至 [編輯>項目設定>播放機 ] 頁面
- 選取 [ Windows 市集] 索引標籤,然後開啟 [ 啟動顯示影像] 區段
- 修改 [Windows 全像攝影 > 追蹤遺失暫停] 和 [顯示影像] 複選框。
追蹤遺失事件
若要定義追蹤遺失時的自定義行為,請處理全域 追蹤遺失事件。
功能
若要讓應用程式利用某些功能,它必須在其指令清單中宣告適當的功能。 指令清單宣告可以在 Unity 中建立,使其包含在未來的項目匯出中。
您可以透過下列方式為 Mixed Reality 應用程式啟用功能:
- 移至 [編輯>項目設定>播放機 ] 頁面
- 選取 [ Windows 市集] 索引標籤,開啟 [ 發佈設定 ] 區段,然後尋找 [功能 ] 列表
開啟全像攝影應用程式常用 API 的適用功能如下:
功能 | 需要功能的 API |
---|---|
SpatialPerception | SurfaceObserver |
網路攝影機 | PhotoCapture 和 VideoCapture |
PicturesLibrary / VideosLibrary | PhotoCapture 或 VideoCapture,分別 (儲存擷取的內容時) |
麥克風 | 擷取音訊) 、DictationRecognizer、GrammarRecognizer 和 KeywordRecognizer 時,VideoCapture ( |
InternetClient | DictationRecognizer (並使用 Unity Profiler) |