從舊版更新 — MRTK2

尋找目前的版本

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

  1. 在 Unity 中開啟 MRTK 專案
  2. 流覽至Project視窗中的 「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功能工具下載最新的套件,並將其直接載入您的 Unity 專案。

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

Unity 資產 (.unitypackage) 檔案

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

  1. 儲存您目前專案的複本,以防您在升級步驟的任何時間點遇到任何 snag。
  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 套件
    • 基礎 - 先匯入此套件
    • 工具
    • (選擇性) 擴充功能

    注意

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

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

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

從 Unity 資產檔案切換至 Mixed Reality Feature Tool 套件帶來許多優點:

  • 更容易更新
  • 更快速的編譯時間
  • 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)

Upgrade window dialogue

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

Custom icon notification

將 2.2.0 更新為 2.3.0

2.3.0 中的 API 變更

ControllerPoseSynchronizer

private ControllerPoseSynchronizer.handedness 欄位已標示為過時。 這應該會對應用程式造成最小的影響,因為欄位在類別之外看不到。

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

適用于 Unity 的 MSBuild

此版本的 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 工具組版本中移除。 建議應用程式程式碼不再使用這個屬性。

可互動

下列方法和屬性已被取代,將會從未來的 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。

Hand visualization modes

可能需要更新自訂的手部追蹤設定檔,才能正確使用 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) 與左/右手操作按鍵 (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>

針對下列已被取代的屬性使用 MixedRealityServiceRegistryCoreServices

  • 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 之後,輸入系統組態設定檔已變更。 如果您有自訂設定檔,當您執行應用程式時,可能會收到下圖中的錯誤。

Selecting the Raycast provider 1

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

Selecting the Raycast provider 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工具組>互動>主題]。

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