Share via


從舊版更新 - MRTK2

尋找目前的版本

請遵循下列指示來找出您目前使用的 MRTK 版本:

  1. 在 Unity 中開啟您的 MRTK 專案
  2. 流覽至 [專案] 視窗中的 “MixedRealityToolkit” 資料夾
  3. 開啟名為 「Version」 的檔案

如果上述檔案和資料夾不存在,您位於較新版本的 MRTK 上。 在此情況下,請嘗試下列動作:

  1. 流覽至 [Mixed Reality Toolkit Foundation] 資料夾
  2. 按兩下 「package.json」 以查看 Unity 中的預覽,或使用文字編輯器開啟預覽
  3. 尋找含有 “version:” 一字的行

升級至新版本的 MRTK

強烈建議在取得 MRTK 更新之後執行移轉工具,以從已被取代的元件自動修正和升級,並調整為重大變更。 移轉工具是 工具 套件的一部分。

下列指示說明 2.4.0 到 2.5.0 升級路徑。 如果您的項目位於 2.3.0 或更早版本,請閱讀 版本之間的 變更以了解升級路徑,或閱讀先前 版本的指示 ,以逐一升級版本。

混合實境功能工具

將 MRTK 升級至較新版本 MRTK 的最簡單方式是使用 Mixed Reality Feature Tool 下載最新的套件,並將其直接載入您的 Unity 專案。

如果專案先前使用 Unity 資產 (.unitypackage) 檔案,請參閱 這些指示

Unity 資產 (.unitypackage) 檔案

另一個升級路徑是手動下載 MRTK Unity 套件,並將其套用至您的專案。 請參閱下列步驟:

  1. 儲存您目前項目的複本,以防您在升級步驟的任何時間點遇到任何 snags。
  2. 關閉 Unity
  3. Assets 資料夾內,刪除下列 MRTK 資料夾及其 .meta 檔案, (專案可能未列出所有資料夾)
    • MRTK/Core
    • MRTK/範例
    • MRTK/Extensions
    • MRTK/提供者
    • MRTK/SDK
    • MRTK/服務
    • MRTK/StandardAssets

    重要

    如果修改 MRTK 著色器,請先建立本機備份,再刪除 MRTK/StandardAssets 資料夾

    • MRTK/工具

    重要

    請勿刪除 MixedRealityToolkit.Generated 資料夾或其 .meta 檔案。

  4. 刪除連結 資料夾

    重要

    某些 Unity 工具,例如 Unity Collab,會將組態信息儲存到 Library 資料夾。 如果使用執行這項作業的工具,請先從 Library 複製工具的數據資料夾再刪除,然後在重新產生連結庫之後加以還原。

  5. 在 Unity 中重新開啟專案
  6. 匯入新的 unity 套件
    • Foundation - 先匯入此套件
    • 工具
    • (選擇性) 延伸模組

    注意

    如果已安裝其他擴充功能,可能需要重新匯入。

    • (選擇性) 範例
  7. 關閉 Unity 並刪除 [ 連結庫 ] 資料夾, (先閱讀下列附注!) 。 必須執行此步驟,才能強制 Unity 重新整理其資產資料庫,並協調現有的自定義配置檔。
  8. 啟動 Unity,並針對專案中的每個場景
    • 從階層中刪除 MixedRealityToolkitMixedRealityPlayspace。 這會刪除主要相機,但會在下一個步驟中重新建立。 如果主要相機的任何屬性已手動變更,這些屬性就必須在建立新的相機之後手動套用。
    • 選取 MixedRealityToolkit -> 新增至場景並設定
    • 選取 MixedRealityToolkit -> 公用程式 -> 更新 -> 控制器對應設定檔 (只需要完成一次) - 這會使用更新的座標軸和數據更新任何自定義控制器對應設定檔,同時保留自定義指派的輸入動作保持不變
  9. 執行 移轉工具 ,並在 完整專案 上執行工具,以確保所有程式代碼都更新為最新。 移轉視窗包含一些不同的移轉處理程式,每個處理程式都必須自行執行。 此步驟牽涉到:
    • 從 [ 移轉處理程序選取 ] 下拉式清單中選取第一個移轉處理程式。
    • 按兩下 [完整專案] 按鈕。
    • 按兩下 [新增移轉的完整專案] 按鈕, (這會掃描整個專案是否有要移轉的物件) 。
    • 按兩下 [移轉] 按鈕,如果找到任何可移轉的物件,應該啟用此按鈕。
    • 針對下拉式清單中每個移轉處理程式重複上述三個步驟。 (請參閱 此問題 ,其中涵蓋可在未來的版本中簡化此移轉程式的工作)

從 Unity 資產檔案切換至 Mixed Reality 功能工具

從 Unity 資產檔案切換至 Mixed Reality 功能工具套件帶來許多優點:

  • 更容易更新
  • 更快速的編譯時間
  • Visual Studio 解決方案中的專案較少

變更為使用 Mixed Reality 功能工具需要一次性手動步驟集。

  1. 儲存您目前項目的複本。
  2. 關閉 Unity
  3. Assets 資料夾內,刪除下列 MRTK 資料夾及其 .meta 檔案, (專案可能未列出所有資料夾)
    • MRTK/Core
    • MRTK/範例
    • MRTK/Extensions
    • MRTK/提供者
    • MRTK/SDK
    • MRTK/服務
    • MRTK/StandardAssets

    重要

    如果修改 MRTK 著色器,請先建立本機備份,再刪除 MRTK/StandardAssets 資料夾

    • MRTK/工具

    重要

    請勿刪除 MixedRealityToolkit.Generated 資料夾或其 .meta 檔案。

  4. 刪除連結 資料夾

    重要

    某些 Unity 工具,例如 Unity Collab,會將組態信息儲存到 Library 資料夾。 如果使用執行這項作業的工具,請先從 Library 複製工具的數據資料夾再刪除,然後在重新產生連結庫之後加以還原。

  5. 在 Unity 中重新開啟專案

執行上述步驟之後,請執行 Mixed Reality 功能工具,並匯入所需的 Mixed Reality 工具組版本。

將 2.3.0 更新為 2.4.0

資料夾重新命名API變更

2.4.0 中的資料夾重新命名

MixedRealityToolkit 資料夾已重新命名,並移至 2.4 版中的通用階層。 如果應用程式對 MRTK 資源使用硬式編碼路徑,則必須根據下表更新這些路徑。

上一個資料夾 新增資料夾
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/範例
MixedRealityToolkit.Extensions MRTK/Extensions
MixedRealityToolkit.Providers MRTK/提供者
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/服務
MixedRealityToolkit.Tests MRTK/測試
MixedRealityToolkit.Tools MRTK/工具

重要

MixedRealityToolkit.Generated包含客戶產生的檔案,且保持不變。

2.4.0 中的眼球注視設定

此版本的 MRTK 會修改眼球注視設定所需的步驟。 您可以在輸入指標設定檔的注視設定中找到 'IsEyeTrackingEnabled' 複選框。 核取此方塊會啟用眼球型注視,而不是預設的頭部型注視。

如需這些變更的詳細資訊,以及眼球追蹤設定的完整指示,請參閱 眼球追蹤 一文。

2.4.0 中的眼球注視指標行為

已修改眼部注視預設指標行為,以符合頭部注視預設指標行為。 偵測到手部之後,會自動隱藏眼球注視指標。 在說「選取」之後,眼睛注視指標會再次顯示。

您可以在 眼睛和手 部文章中找到注視和手部設定的詳細數據。

2.4.0 中的 API 變更

自定義控制器類別

自訂控制器類別先前必須定義 SetupDefaultInteractions(Handedness)。 此方法在 2.4 中已經過時,因為手部參數與控制器類別本身的手部重複。 新的方法沒有參數。 此外,許多控制器類別會以相同的方式 AssignControllerMappings(DefaultInteractions); 定義 () ,因此完整呼叫已重構為 BaseController ,並建立選擇性覆寫,而不是必要。

眼球注視屬性

UseEyeTracking實作 屬性 GazeProviderIMixedRealityEyeGazeProvider 已重新命名為 IsEyeTrackingEnabled

如果您先前已這麼做...

if (CoreServices.InputSystem.GazeProvider is GazeProvider gazeProvider)
{
    gazeProvider.UseEyeTracking = true;
}

立即執行此動作...

if (CoreServices.InputSystem.GazeProvider is GazeProvider gazeProvider)
{
    gazeProvider.IsEyeTrackingEnabled = true;
}

WindowsApiChecker 屬性

下列 WindowsApiChecker 屬性已標示為過時。 請使用 IsMethodAvailableIsPropertyAvailableIsTypeAvailable

  • UniversalApiContractV8_IsAvailable
  • UniversalApiContractV7_IsAvailable
  • UniversalApiContractV6_IsAvailable
  • UniversalApiContractV5_IsAvailable
  • UniversalApiContractV4_IsAvailable
  • UniversalApiContractV3_IsAvailable

未來 API 合約版本沒有將屬性新增至 WindowsApiChecker 的計劃。

GltfMeshPrimitiveAttributes 只讀

用來設定的 gltf 網格基本屬性,現在是唯讀屬性。 還原串行化時,其值將會設定一次。

自訂按鈕圖示移轉

先前自定義按鈕圖示需要將新材質指派給按鈕的四邊轉譯器。 這已不再需要,建議您將自定義圖示紋理移至 IconSet。 現有的自定義材質和圖示會保留下來。 不過,在升級之前,它們會比較不理想。 若要將專案中所有按鈕上的資產升級為新的建議格式,請使用 ButtonConfigHelperMigrationHandler。 (Mixed Reality 工具組 - 公用程式 ->> 移轉視窗 -> 移轉處理程式選取 -> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

升級視窗對話框

如果在移轉期間的預設圖示集中找不到圖示,則會在MixedRealityToolkit.Generated/CustomIconSets 中建立自定義圖示集。 對話框會指出已執行此動作。

自訂圖示通知

將 2.2.0 更新為 2.3.0

2.3.0 中的 API 變更

ControllerPoseSynchronizer

private ControllerPoseSynchronizer.handedness 字段已標示為過時。 這應該對應用程式的影響降到最低,因為字段在類別之外看不到。

公用 ControllerPoseSynchronizer.Handedness 屬性的 setter 已移除 (#7012) 。

MSBuild for Unity

此版本的 MRTK 會使用比舊版更新版本的適用於 Unity 的 MSBuild。 在專案載入期間,如果舊版列在 Unity 套件管理員指令清單中,則會顯示組態對話方塊,並核取 [啟用適用於 Unity 的 MSBuild] 選項。 套用將會執行升級。

ScriptingUtilities

ScriptingUtilities 類別已標示為過時,而且已由 Microsoft.MixedReality.Toolkit.Editor.Utilities 元件中的 ScriptUtilities 取代。 新的類別會精簡先前的行為,並新增移除腳本定義的支援。

雖然現有的程式代碼會繼續在 2.3.0 版中運作,但建議更新為新的 類別。

ShellHandRayPointer

ShellHandRayPointer 類別的 lineRendererSelected 和 lineRendererNoTarget 成員已分別由 lineMaterialSelected 和 lineMaterialNoTarget 取代, (#6863) 。

請以lineMaterialSelected和/或lineRendererNoTarget 取代lineRendererSelected 以lineMaterialNoTarget 取代lineRendererSelected,以解決編譯錯誤。

空間觀察者 StartupBehavior

在重新啟用 (#6919) 時,以 類別為基礎的BaseSpatialObserver空間觀察者現在會接受 StartupBehavior 的值。

不需要變更即可利用此修正程式。

已更新UX控件預製專案以使用 PressableButton

下列預製項目現在使用 PressableButton 元件,而不是 TouchHandler 來進行接近互動 (7070)

  • AnimationButton
  • 按鈕
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • ToggleSwitch
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

應用程式程式代碼可能會因為這項變更而需要更新。

WindowsMixedRealityUtilities 命名空間

WindowsMixedRealityUtilities 的命名空間已從 Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input 變更為 Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863) 。

請更新 #using 語句來解決編譯錯誤。

將 2.1.0 更新為 2.2.0

2.2.0 中的 API 變更

IMixedRealityBoundarySystem.Contains

此方法先前採用特定 Unity 定義的實驗列舉。 現在它會採用與 Unity 列舉相同的 MRTK 定義列舉。 這項變更有助於為 Unity 的未來界限 API 準備 MRTK。

MixedRealityServiceProfileAttribute

為了更清楚地描述支援配置檔的需求,MixedRealityServiceProfileAttribute 已更新以新增排除類型的選擇性集合。 在此變更過程中,ServiceType 屬性已從 Type 變更為 Type[],並重新命名為 RequiredTypes。

也已新增第二個屬性 ExcludedTypes。

將 2.0.0 更新為 2.1.0

2.1.0 中的 API 變更

BaseNearInteractionTouchable

BaseNearInteractionTouchable已修改 為將 方法標示OnValidate為虛擬。 擴充 BaseNearInteractionTouchable (的類別例如: NearInteractionTouchableUnityUI 已更新) 以反映這項變更。

ColliderNearInteractionTouchable

ColliderNearInteractionTouchable 類別已被取代。 請更新程式代碼參考以使用 BaseNearInteractionTouchable

IMixedRealityMouseDeviceManager

已新增

IMixedRealityMouseDeviceManager 已新增 CursorSpeedWheelSpeed 屬性。 這些屬性可讓應用程式分別指定游標和滾輪速度的乘數值。

這是重大變更,而且需要修改現有的滑鼠設備管理器實作。

注意

這項變更與 2.0.0 版不相容。

已被取代

屬性MouseInputProfile已標示為過時,將會從未來的 Microsoft Mixed Reality Toolkit 版本中移除。 建議應用程式程式代碼不再使用這個屬性。

可互動

下列方法和屬性已被取代,將會從未來的 Microsoft Mixed Reality 工具組版本中移除。 建議根據過時屬性中包含的指引更新應用程式程式代碼,並在控制台中顯示。

  • public bool Enabled
  • public bool FocusEnabled
  • public void ForceUpdateThemes()
  • public bool IsDisabled
  • public bool IsToggleButton
  • public int GetDimensionIndex()
  • public State[] GetStates()
  • public bool RequiresFocus
  • public void ResetBaseStates()
  • public virtual void SetCollision(bool collision)
  • public virtual void SetCustom(bool custom)
  • public void SetDimensionIndex(int index)
  • public virtual void SetDisabled(bool disabled)
  • public virtual void SetFocus(bool focus)
  • public virtual void SetGesture(bool gesture)
  • public virtual void SetGestureMax(bool gesture)
  • public virtual void SetGrab(bool grab)
  • public virtual void SetInteractive(bool interactive)
  • public virtual void SetObservation(bool observation)
  • public virtual void SetObservationTargeted(bool targeted)
  • public virtual void SetPhysicalTouch(bool touch)
  • public virtual void SetPress(bool press)
  • public virtual void SetTargeted(bool targeted)
  • public virtual void SetToggled(bool toggled)
  • public virtual void SetVisited(bool visited)
  • public virtual void SetVoiceCommand(bool voice)

NearInteractionTouchableSurface

已新增 類別NearInteractionTouchableSurface,現在可作為 和NearInteractionTouchableUnityUINearInteractionTouchable基類。

2.1.0 中的配置文件變更

手部追蹤配置檔

手部網格和聯合視覺效果現在有個別的編輯器和玩家設定。 已更新手部追蹤配置檔,以允許將這些視覺效果設定為 ;Nothing、Everything、Editor 或 Player。

手部視覺效果模式

自定義手部追蹤配置檔可能需要更新,才能正確使用 2.1.0 版。

注意

這項變更與 2.0.0 版不相容。

輸入模擬配置檔

已升級輸入模擬系統,這會變更輸入模擬配置檔中的一些設定。 某些變更無法自動移轉,而且使用者可能會發現配置檔正在使用預設值。

  1. 配置檔中的所有 KeyCode 和滑鼠按鈕系結都已取代為泛型 KeyBinding 結構,它會分別儲存系結類型 (鍵或滑鼠) ,以及實際系結程式代碼 (KeyCode 或滑鼠按鈕編號) 。 結構有自己的偵測器,允許統一顯示並提供「自動系結」工具,藉由按下個別按鍵來快速設定按鍵系結,而不是從大型下拉式清單中選取。

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle 先前包含在列舉中 MouseLookButtonInputSimulationMouseButton.Focused現在是個別的選項。 啟用時,相機會在放開按鈕之後持續旋轉滑鼠,直到按下逸出按鍵為止。

  3. HandDepthMultiplier 默認值已從 0.1 降低至 0.03,以容納輸入仿真的一些變更。 如果相機在捲動時移動太快,請嘗試降低此值。

  4. 已移除旋轉手部的按鍵,手部旋轉現在也會由滑鼠控制。 將 HandRotateButton ctrl (Ctrl) 與左/右手操作按鍵 (LShift/Space) 一起,即可啟用手部旋轉。

  5. 新的座標軸 「UpDown」 已導入輸入軸清單。 這會控制垂直相機的移動,預設為Q/E鍵以及控制器觸發程式按鈕。

如需這些變更的詳細資訊,請參閱 輸入模擬服務 一文。

滑鼠數據提供者配置檔

滑鼠數據提供者配置檔已更新,以公開新的 CursorSpeedWheelSpeed 屬性。 現有的自訂配置檔會自動提供預設值。 儲存配置檔時,將會保存這些新值。

控制器對應配置檔

某些軸和輸入類型已在 2.1.0 中更新,特別是在 OpenVR 平台周圍。 請務必在升級時選取 MixedRealityToolkit -> 公用程式 -> 更新 -> 控制器對應配置檔 。 這會使用更新的座標軸和數據來更新任何自定義控制器對應配置檔,同時保留自定義指派的輸入動作。

將 RC2 更新為 2.0.0

在 Microsoft Mixed Reality Toolkit 的 RC2 和 2.0.0 版之間,所做的變更可能會影響現有的專案。 本文件說明這些變更,以及如何將專案更新為 2.0.0 版本。

2.0.0 中的 API 變更

自 RC2 發行以來,已有一些 API 變更,包括可能會中斷現有專案的一些變更。 下列各節說明 RC2 和 2.0.0 版本之間發生的變更。

MixedRealityToolkit

MixedRealityToolkit 物件的下列公用屬性已被取代。

  • RegisteredMixedRealityServices 不再包含已註冊的延伸模組服務和數據提供者的集合。

若要存取擴充服務,請使用 MixedRealityServiceRegistry.TryGetService<T>。 若要存取資料提供者,請將服務實體 IMixedRealityDataProviderAccess 轉換成 並使用 GetDataProvider<T>

MixedRealityServiceRegistry 改用或 CoreServices 改用下列已被取代的屬性

  • ActiveSystems
  • InputSystem
  • BoundarySystem
  • CameraSystem
  • SpatialAwarenessSystem
  • TeleportSystem
  • DiagnosticsSystem
  • SceneSystem

CoreServices

類別 CoreServices 是靜態系統存取子的取代專案 (,例如:在物件中找到 MixedRealityToolkit 的BoundarySystem) 。

重要

系統 MixedRealityToolkit 存取子已在 2.0.0 版中淘汰,將在未來的 MRTK 版本中移除。

下列程式代碼範例說明舊模式和新模式。

// Old
GameObject playAreaVisualization = MixedRealityToolkit.BoundarySystem?.GetPlayAreaVisualization();

// New
GameObject playAreaVisualization = CoreServices.BoundarySystem?.GetPlayAreaVisualization();

使用新的 CoreSystem 類別可確保如果您的應用程式程式代碼變更為使用不同的服務註冊機構, (例如:其中一個實驗性服務管理員) ,則不需要更新。

IMixedRealityRaycastProvider

新增 IMixedRealityRaycastProvider 之後,輸入系統組態配置檔已變更。 如果您有自定義配置檔,當您執行應用程式時,可能會收到下圖中的錯誤。

選取Raycast提供者1

若要修正這些問題,請將 IMixedRealityRaycastProvider 實例新增至您的輸入系統配置檔。

選取Raycast提供者2

事件系統

  • 舊的 IMixedRealityEventSystem API 方法 Register ,且 Unregister 已標示為過時。 它們會保留為回溯相容性。
  • InputSystemGlobalListener 已標示為過時。 其功能尚未變更。
  • BaseInputHandler 基類已從 InputSystemGlobalListener 變更為 InputSystemGlobalHandlerListener。 這是的任何子 BaseInputHandler代的重大變更。

變更背後的動機

舊的事件系統 API Register ,而且 Unregister 可能會導致運行時間發生多個問題,主要為:

  • 如果元件註冊全域事件,它會收到 所有類型的 全域輸入事件。
  • 如果物件上的其中一個元件註冊全域輸入事件,則此物件上的所有元件都會接收 所有類型的 全域輸入事件。
  • 如果相同物件上的兩個元件註冊至全域事件,然後在運行時間中停用一個元件,第二個元件會停止接收全域事件。

新的 API RegisterHandlerUnregisterHandler

  • 提供明確且細微的控制,以全域方式接聽哪些輸入事件,以及應以焦點為基礎的事件。
  • 允許相同物件上的多個元件彼此獨立接聽全域事件。

如何移轉

  • 如果您之前直接呼叫 Register/Unregister API,請將這些呼叫取代為 對的 RegisterHandler/UnregisterHandler呼叫。 使用您實作為泛型參數的處理程式介面。 如果您實作多個介面,而其中數個介面會接聽全域輸入事件,請多次呼叫 RegisterHandler
  • 如果您已經繼承自 InputSystemGlobalListener,請將繼承變更為 InputSystemGlobalHandlerListener。 實 RegisterHandlers 作和 UnregisterHandlers 抽象方法。 在實作呼叫 inputSystem.RegisterHandler () inputSystem.UnregisterHandler ,以在您要接聽全域事件的所有處理程式介面上註冊。
  • 如果您已經繼承自 BaseInputHandler,請實 RegisterHandlers 作 和 UnregisterHandlers 抽象方法 (與 InputSystemGlobalListener) 相同。

移轉範例

// Old
class SampleHandler : MonoBehaviour, IMixedRealitySourceStateHandler, IMixedRealityHandJointHandler
{
    private void OnEnable()
    {
        InputSystem?.Register(gameObject);
    }

    private void OnDisable()
    {
        InputSystem?.Unregister(gameObject);
    }
}

// Migrated
class SampleHandler : MonoBehaviour, IMixedRealitySourceStateHandler, IMixedRealityHandJointHandler
{
    private void OnEnable()
    {
        InputSystem?.RegisterHandler<IMixedRealitySourceStateHandler>(this);
        InputSystem?.RegisterHandler<IMixedRealityHandJointHandler>(this);
    }

    private void OnDisable()
    {
        InputSystem?.UnregisterHandler<IMixedRealitySourceStateHandler>(this);
        InputSystem?.UnregisterHandler<IMixedRealityHandJointHandler>(this);
    }
}
// Old
class SampleHandler2 : InputSystemGlobalListener, IMixedRealitySpeechHandler
{
}

// Migrated
class SampleHandler2 : InputSystemGlobalHandlerListener, IMixedRealitySpeechHandler
{
    private void RegisterHandlers()
    {
        InputSystem?.RegisterHandler<IMixedRealitySpeechHandler>(this);
    }

    private void UnregisterHandlers()
    {
        InputSystem?.UnregisterHandler<IMixedRealitySpeechHandler>(this);
    }
}

// Alternative migration
class SampleHandler2 : MonoBehaviour, IMixedRealitySpeechHandler
{
    private void OnEnable()
    {
        IMixedRealityInputSystem inputSystem;
        if (MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
        {
            inputSystem?.RegisterHandler<IMixedRealitySpeechHandler>(this);
        }
    }

    private void OnDisable()
    {
        IMixedRealityInputSystem inputSystem;
        if (MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
        {
            inputSystem?.UnregisterHandler<IMixedRealitySpeechHandler>(this);
        }
    }
}

空間感知

IMixedRealitySpatialAwarenessSystem 和 IMixedRealitySpatialAwarenessObserver 介面已採用多個重大變更,如下所示。

變更

下列方法 () 已重新命名,以更清楚地描述其使用方式。

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent 已重新命名為 , IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent 以釐清其使用方式。

新增項目

根據客戶意見反應,已新增可輕易移除先前觀察到的空間感知數據的支援。

  • IMixedRealitySpatialAwarenessSystem.ClearObservations()
  • IMixedRealitySpatialAwarenessSystem.ClearObservations<T>(string name)
  • IMixedRealitySpatialAwarenessObserver.ClearObservations()

解算器

某些規劃求解元件和 SolverHandler 管理員類別已變更,可修正各種 Bug,並更直覺地使用。

SolverHandler

  • 類別不再從 ControllerFinder
  • TrackedObjectToReference public 屬性已被取代,且已重新命名為 TrackedTargetType
  • TrackedObjectType 將左 & 控制器值取代。 請改用 MotionControllerHandJoint 值並更新新的 TrackedHandedness 屬性,以限制追蹤到左或右控制器

InBetween

  • TrackedObjectForSecondTransform public 屬性已被取代,且已重新命名為 SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() 已移除。 若要更新規劃求解,請修改公用屬性 (,也就是 SecondTrackedObjectType)

SurfaceMagnetism

  • MaxDistance public 屬性已被取代,且已重新命名為 MaxRaycastDistance
  • CloseDistance public 屬性已被取代,且已重新命名為 ClosestDistance
  • RaycastDirectionMode 預設值現在是 TrackedTargetForward 正向追蹤目標轉換方向的光線廣播
  • OrientationMode列舉值 VerticalFull已分別重新命名為 TrackedTargetSurfaceNormal
  • KeepOrientationVertical 已新增 public 屬性,以控制相關聯 GameObject 的方向是否維持垂直

按鈕

  • PressableButton 現在已將 DistanceSpaceMode 屬性設定 Local 為預設值。 這可讓按鈕調整,同時仍可按下

裁剪球體

ClippingSphere 介面已變更為鏡像 ClippingBox 和 ClippingPlane 中找到的 API。

ClippingSphere 的 Radius 屬性現在會根據轉換小數位數隱含計算。 開發人員必須先在偵測器中指定 ClippingSphere 的半徑之前。 如果您想要變更半徑,只要像平常一樣更新轉換的轉換小數字數。

NearInteractionTouchable 和 PokePointer

  • NearInteractionTouchable 不會再處理觸控的 Unity UI 畫布。 NearInteractionTouchableUnityUI 類別現在必須用於 Unity UI 觸控。
  • ColliderNearInteractionTouchable 是以碰撞器為基礎的可觸控的新基類,也就是 NearInteractionTouchableUnityUI 以外的每個可觸控專案。
  • BaseNearInteractionTouchable.DistFront 已移動並重新命名為 PokePointer.TouchableDistance 這是距離,PokePointer 可以與觸控互動。 先前每個可觸控的互動距離上限,但現在已定義於PokePointer中,這可提供更好的優化。
  • BaseNearInteractionTouchable.DistBack 已重新命名為 PokeThreshold 這可讓您清楚知道 PokeThreshold 是 DebounceThreshold 的對應專案。 當 PokeThreshold 被交叉,並在 DebounceThreshold 交叉時釋放可觸控。

ReadOnlyAttribute

命名空間 Microsoft.MixedReality.Toolkit 已新增至 ReadOnlyAttributeBeginReadOnlyGroupAttributeEndReadOnlyGroupAttribute

PointerClickHandler

PointerClickHandler 類別已被取代。 PointerHandler應該改用 ,它提供相同的功能。

HoloLens 按兩下器支援

HoloLens 按兩下器的控制器對應已從未處理變更為未處理的 WindowsMixedRealityControllerWindowsMixedRealityGGVHand。 若要考慮此問題,自動更新程式會在您第一次開啟 ControllerMapping 設定檔時執行。 升級至 2.0.0 之後,請至少開啟任何自定義配置檔一次,以觸發此單次移轉步驟。

InteractableHighlight

InteractableHighlight 類別已被取代。 InteractableOnFocus應該改用 類別和FocusInteractableStates資產。 若要建立 InteractableOnFocus的新Theme資產,請在專案視窗中按兩下滑鼠右鍵,然後選取 [建立>Mixed Reality Toolkit>互動>主題]。

HandInteractionPanZoom

HandInteractionPanZoom 已移至 UI 命名空間,因為它不是輸入元件。 HandPanEventData 也已移至此命名空間,並簡化以與其他 UI 事件數據對應。

2.0.0 中的元件名稱變更

在 2.0.0 版本中,所有官方 Mixed Reality 工具元件名稱及其相關聯的元件定義 (.asmdef) 檔案都已更新,以符合下列模式。

Microsoft.MixedReality.Toolkit[.<name>]

在某些情況下,已合併多個元件,以建立其內容更好的 Unity。 如果您的專案使用自定義 .asmdef 檔案,則可能需要更新。

下表描述 RC2 .asmdef 檔名如何對應至 2.0.0 版本。 所有元件名稱都符合 .asmdef 檔名。

MixedRealityToolkit

RC2 2.0.0
MixedRealityToolkit.asmdef Microsoft.MixedReality.Toolkit.asmdef
MixedRealityToolkit.Core.BuildAndDeploy.asmdef Microsoft.MixedReality.Toolkit.Editor.BuildAndDeploy.asmdef
MixedRealityToolkit.Core.Definitions.Utilities.Editor.asmdef 已移除,請使用 Microsoft.MixedReality.Toolkit.Editor.Utilities.asmdef
MixedRealityToolkit.Core.Extensions.EditorClassExtensions.asmdef Microsoft.MixedReality.Toolkit.Editor.ClassExtensions.asmdef
MixedRealityToolkit.Core.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Editor.Inspectors.asmdef
MixedRealityToolkit.Core.Inspectors.ServiceInspectors.asmdef Microsoft.MixedReality.Toolkit.Editor.ServiceInspectors.asmdef
MixedRealityToolkit.Core.UtilitiesAsync.asmdef Microsoft.MixedReality.Toolkit.Async.asmdef
MixedRealityToolkit.Core.Utilities.Editor.asmdef Microsoft.MixedReality.Toolkit.Editor.Utilities.asmdef
MixedRealityToolkit.Utilities.Gltf.asmdef Microsoft.MixedReality.Toolkit.Gltf.asmdef
MixedRealityToolkit.Utilities.Gltf.Importers.asmdef Microsoft.MixedReality.Toolkit.Gltf.Importers.asmdef

MixedRealityToolkit.Providers

RC2 2.0.0
MixedRealityToolkit.Providers.OpenVR.asmdef Microsoft.MixedReality.Toolkit.Providers.OpenVR.asmdef
MixedRealityToolkit.Providers.WindowsMixedReality.asmdef Microsoft.MixedReality.Toolkit.Providers.WindowsMixedReality.asmdef
MixedRealityToolkit.Providers.WindowsVoiceInput.asmdef Microsoft.MixedReality.Toolkit.Providers.WindowsVoiceInput.asmdef

MixedRealityToolkit.Services

RC2 2.0.0
MixedRealityToolkit.Services.BoundarySystem.asmdef Microsoft.MixedReality.Toolkit.Services.BoundarySystem.asmdef
MixedRealityToolkit.Services.CameraSystem.asmdef Microsoft.MixedReality.Toolkit.Services.CameraSystem.asmdef
MixedRealityToolkit.Services.DiagnosticsSystem.asmdef Microsoft.MixedReality.Toolkit.Services.DiagnosticsSystem.asmdef
MixedRealityToolkit.Services.InputSimulation.asmdef Microsoft.MixedReality.Toolkit.Services.InputSimulation.asmdef
MixedRealityToolkit.Services.InputSimulation.Editor.asmdef Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor.asmdef
MixedRealityToolkit.Services.InputSystem.asmdef Microsoft.MixedReality.Toolkit.Services.InputSystem.asmdef
MixedRealityToolkit.Services.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Services.InputSystem.Editor.asmdef
MixedRealityToolkit.Services.SceneSystem.asmdef Microsoft.MixedReality.Toolkit.Services.SceneSystem.asmdef
MixedRealityToolkit.Services.SpatialAwarenessSystem.asmdef Microsoft.MixedReality.Toolkit.Services.SpatialAwarenessSystem.asmdef
MixedRealityToolkit.Services.TeleportSystem.asmdef Microsoft.MixedReality.Toolkit.Services.TeleportSystem.asmdef

MixedRealityToolkit.SDK

RC2 2.0.0
MixedRealityToolkit.SDK.asmdef Microsoft.MixedReality.Toolkit.SDK.asmdef
MixedRealityToolkit.SDK.Inspectors.asmdef Microsoft.MixedReality.Toolkit.SDK.Inspectors.asmdef

MixedRealityToolkit.Examples

RC2 2.0.0
MixedRealityToolkit.Examples.asmdef Microsoft.MixedReality.Toolkit.Examples.asmdef
MixedRealityToolkit.Examples.Demos.Gltf.asmdef Microsoft.MixedReality.Toolkit.Demos.Gltf.asmdef
MixedRealityToolkit.Examples.Demos.StandardShader.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.StandardShader.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.Utilities.InspectorFields.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.asmdef
MixedRealityToolkit.Examples.Demos.Utilities.InspectorFields.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.UX.Interactables.asmdef Microsoft.MixedReality.Toolkit.Demos.UX.Interactables.asmdef