Aktualisieren von früheren Versionen — MRTK2

Suchen der aktuellen Version

Befolgen Sie die folgenden Anweisungen, um herauszufinden, welche MRTK-Version Sie derzeit verwenden:

  1. Öffnen Ihres MRTK-Projekts in Unity
  2. Navigieren Sie in Ihrem Projektfenster zum Ordner "MixedRealityToolkit".
  3. Öffnen Sie die Datei mit dem Namen "Version".

Wenn die Datei und der Ordner oben nicht vorhanden sind, verwenden Sie eine neuere Version von MRTK. Versuchen Sie in diesem Fall Folgendes:

  1. Navigieren Sie zum Ordner "Mixed Reality Toolkit Foundation".
  2. Klicken Sie auf "package.json", um eine Vorschau in Unity anzuzeigen, oder öffnen Sie sie mit einem Text-Editor.
  3. Suchen Sie nach der Zeile mit dem Wort "version:"

Upgrade auf eine neue MRTK-Version

Es wird dringend empfohlen, das Migrationstool auszuführen, nachdem sie das MRTK-Update erhalten haben , um automatische Korrekturen und Upgrades von veralteten Komponenten durchzuführen und an breaking Changes anzupassen. Das Migrationstool ist Teil des Tools-Pakets .

In den folgenden Anweisungen wird der Upgradepfad 2.4.0 auf 2.5.0 beschrieben. Wenn Sich Ihr Projekt auf Version 2.3.0 oder früher befindet, lesen Sie die Änderungen zwischen den Versionen weiter, um den Upgradepfad zu verstehen, oder lesen Sie die Anweisungen der vorherigen Version , um ein Upgrade nach Version durchzuführen.

Mixed Reality Feature-Tool

Die einfachste Möglichkeit, MRTK auf eine neuere MRTK-Version zu aktualisieren, ist die Verwendung des Mixed Reality Feature-Tools, um die neuesten Pakete herunterzuladen und direkt in Ihr Unity-Projekt zu laden.

Wenn das Projekt zuvor Unity-Ressourcendateien (.unitypackage) verwendet hat, lesen Sie diese Anweisungen.

Unity-Ressourcendateien (.unitypackage)

Ein weiterer Upgradepfad besteht darin, MRTK Unity-Pakete manuell herunterzuladen und auf Ihr Projekt anzuwenden. Sehen Sie sich die folgenden Schritte an:

  1. Speichern Sie eine Kopie Ihres aktuellen Projekts, falls Sie zu einem beliebigen Zeitpunkt in den Upgradeschritten auf Snags stoßen.
  2. Unity schließen
  3. Löschen Sie im Ordner Assets die folgenden MRTK-Ordner zusammen mit ihren META-Dateien (das Projekt enthält möglicherweise nicht alle aufgelisteten Ordner)
    • MRTK/Kern
    • MRTK/Beispiele
    • MRTK/Erweiterungen
    • MRTK/Anbieter
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Wichtig

    Wenn Änderungen an den MRTK-Shadern vorgenommen wurden, erstellen Sie vor dem Löschen des Ordners MRTK/StandardAssets eine lokale Sicherung.

    • MRTK/Tools

    Wichtig

    Löschen Sie nicht den Ordner MixedRealityToolkit.Generated oder seine META-Datei.

  4. Löschen des Ordners "Bibliothek"

    Wichtig

    Einige Unity-Tools, z. B. Unity Collab, speichern Konfigurationsinformationen im Ordner Library. Wenn Sie ein Tool verwenden, das dies tut, kopieren Sie zuerst den Datenordner des Tools aus der Bibliothek, bevor Sie ihn löschen, und stellen Sie ihn dann wieder her, nachdem die Bibliothek neu generiert wurde.

  5. Erneutes Öffnen des Projekts in Unity
  6. Importieren der neuen Unity-Pakete
    • Foundation: Importieren dieses Pakets zuerst
    • Tools
    • (Optional) Erweiterungen

    Hinweis

    Wenn zusätzliche Erweiterungen installiert wurden, müssen sie möglicherweise erneut importiert werden.

    • (Optional) Beispiele
  7. Schließen Sie Unity, und löschen Sie den Ordner Bibliothek (lesen Sie zuerst den hinweis unten!). Dieser Schritt ist erforderlich, um Unity zu erzwingen, die Ressourcendatenbank zu aktualisieren und vorhandene benutzerdefinierte Profile abzugleichen.
  8. Starten Sie Unity und für jede Szene im Projekt.
    • Löschen Sie MixedRealityToolkit und MixedRealityPlayspace, falls vorhanden, aus der Hierarchie. Dadurch wird die Standard Kamera gelöscht, sie wird jedoch im nächsten Schritt neu erstellt. Wenn Eigenschaften der Standard Kamera manuell geändert wurden, müssen diese manuell neu angewendet werden, sobald die neue Kamera erstellt wurde.
    • Wählen Sie MixedRealityToolkit –> Zu Szene hinzufügen und Konfigurieren aus.
    • Wählen Sie MixedRealityToolkit –> Hilfsprogramme –> Update –> Controllerzuordnungsprofile (muss nur einmal ausgeführt werden) – Dadurch werden alle benutzerdefinierten Controllerzuordnungsprofile mit aktualisierten Achsen und Daten aktualisiert, während Ihre benutzerdefinierten Eingabeaktionen intakt bleiben.
  9. Führen Sie das Migrationstool aus, und führen Sie das Tool im vollständigen Projekt aus, um sicherzustellen, dass Der gesamte Code auf den neuesten Stand aktualisiert wird. Das Migrationsfenster enthält eine Reihe verschiedener Migrationshandler, die jeweils für sich ausgeführt werden müssen. Dieser Schritt umfasst Folgendes:
    • Wählen Sie den ersten Migrationshandler aus der Dropdownliste Migrationshandlerauswahl aus .
    • Klicken Sie auf die Schaltfläche "Vollständiges Projekt".
    • Klicken Sie auf die Schaltfläche "Vollständiges Projekt für migration hinzufügen" (dadurch wird das gesamte Projekt auf zu migrierende Objekte überprüft).
    • Klicken Sie auf die Schaltfläche "Migrieren", die aktiviert werden sollte, wenn migrierte Objekte gefunden wurden.
    • Wiederholen Sie die vorherigen drei Schritte für jeden der Migrationshandler in der Dropdownliste. (Siehe dieses Problem , das die Arbeit behandelt, die zur Vereinfachung dieses Migrationsprozesses in einem zukünftigen Release ausgeführt werden kann.)

Wechseln von Unity-Ressourcendateien zu Mixed Reality Featuretool

Der Wechsel von Unity-Ressourcendateien zu Mixed Reality Featuretoolpaketen bringt eine Reihe von Vorteilen mit sich:

  • Einfachere Aktualisierung
  • Schnellere Kompilierungszeiten
  • Weniger Projekte in der Visual Studio-Projektmappe

Der Wechsel zur Verwendung des Mixed Reality Featuretools erfordert einen einmaligen Satz manueller Schritte.

  1. Speichern Sie eine Kopie Ihres aktuellen Projekts.
  2. Unity schließen
  3. Löschen Sie im Ordner Assets die folgenden MRTK-Ordner zusammen mit ihren META-Dateien (das Projekt enthält möglicherweise nicht alle aufgelisteten Ordner)
    • MRTK/Kern
    • MRTK/Beispiele
    • MRTK/Erweiterungen
    • MRTK/Anbieter
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Wichtig

    Wenn Änderungen an den MRTK-Shadern vorgenommen wurden, erstellen Sie vor dem Löschen des Ordners MRTK/StandardAssets eine lokale Sicherung.

    • MRTK/Tools

    Wichtig

    Löschen Sie nicht den Ordner MixedRealityToolkit.Generated oder seine META-Datei.

  4. Löschen des Ordners "Bibliothek"

    Wichtig

    Einige Unity-Tools, z. B. Unity Collab, speichern Konfigurationsinformationen im Ordner Library. Wenn Sie ein Tool verwenden, das dies tut, kopieren Sie zuerst den Datenordner des Tools aus der Bibliothek, bevor Sie ihn löschen, und stellen Sie ihn dann wieder her, nachdem die Bibliothek neu generiert wurde.

  5. Erneutes Öffnen des Projekts in Unity

Nachdem die vorherigen Schritte ausgeführt wurden, führen Sie das Mixed Reality Feature Tool aus, und importieren Sie die gewünschte Version von Mixed Reality Toolkit.

Aktualisieren von 2.3.0 auf 2.4.0

Ordner benenntAPI-Änderungen um

Ordnerumbenennungen in 2.4.0

Die MixedRealityToolkit-Ordner wurden umbenannt und in eine allgemeine Hierarchie in Version 2.4 verschoben. Wenn eine Anwendung hartcodierte Pfade zu MRTK-Ressourcen verwendet, müssen sie gemäß der folgenden Tabelle aktualisiert werden.

Vorheriger Ordner Neuer Ordner
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/Beispiele
MixedRealityToolkit.Extensions MRTK/Erweiterungen
MixedRealityToolkit.Providers MRTK/Anbieter
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Services
MixedRealityToolkit.Tests MRTK/Tests
MixedRealityToolkit.Tools MRTK/Tools

Wichtig

enthält MixedRealityToolkit.Generated vom Kunden generierte Dateien und bleibt unverändert.

Einrichtung des Blicks in Version 2.4.0

Diese Version von MRTK ändert die Schritte, die für die Einrichtung des Blicks erforderlich sind. Das Kontrollkästchen "IsEyeTrackingEnabled" finden Sie in den Blickeinstellungen des Eingabezeigerprofils. Wenn Sie dieses Kontrollkästchen aktivieren, wird der blickbasierte Blick aktiviert, anstatt den standardmäßigen kopfbasierten Blick.

Weitere Informationen zu diesen Änderungen und vollständige Anweisungen für die Einrichtung des Eyetrackings finden Sie im Artikel eyetracking .

Verhalten des Blickzeigers in Version 2.4.0

Das Standardmäßige Zeigerverhalten des Blicks wurde so geändert, dass es dem Standardverhalten des Kopfzeigers entspricht. Ein Blickzeiger wird automatisch unterdrückt, sobald eine Hand erkannt wird. Der Blickzeiger wird wieder sichtbar, nachdem "Auswählen" gesagt wurde.

Details zu Blick- und Handeinrichtung finden Sie im Artikel Augen und Hände .

API-Änderungen in 2.4.0

Benutzerdefinierte Controllerklassen

Benutzerdefinierte Controllerklassen mussten zuvor definieren SetupDefaultInteractions(Handedness). Diese Methode wurde in Version 2.4 veraltet, da der Händigkeitsparameter mit der eigenen Händigkeit der Controllerklasse redundant war. Die neue Methode verfügt über keine Parameter. Darüber hinaus haben viele Controllerklassen dies auf die gleiche Weise definiert (AssignControllerMappings(DefaultInteractions);), sodass der vollständige Aufruf in BaseController umgestaltet wurde und eine optionale Außerkraftsetzung statt erforderlich gemacht wurde.

Eigenschaften des Blicks

Die UseEyeTracking -Eigenschaft aus GazeProvider der Implementierung von IMixedRealityEyeGazeProvider wurde in IsEyeTrackingEnabledumbenannt.

Wenn Sie dies zuvor getan haben...

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

Tun Sie dies jetzt...

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

WindowsApiChecker-Eigenschaften

Die folgenden WindowsApiChecker-Eigenschaften wurden als veraltet markiert. Verwenden IsMethodAvailableSie , IsPropertyAvailable oder IsTypeAvailable.

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

Es gibt keine Pläne, WindowsApiChecker-Eigenschaften für zukünftige API-Vertragsversionen hinzuzufügen.

Schreibgeschützt gltfMeshPrimitiveAttributes

Die primitiven Gltf-Mesh-Attribute waren bisher festlegbar und sind jetzt schreibgeschützt. Ihre Werte werden einmal festgelegt, wenn sie deserialisiert werden.

Benutzerdefinierte Schaltflächensymbol Migration

Zuvor mussten benutzerdefinierte Schaltflächensymbole dem Quadrenderer der Schaltfläche ein neues Material zuweisen. Dies ist nicht mehr erforderlich, und es wird empfohlen, benutzerdefinierte Symboltexturen in ein IconSet zu verschieben. Vorhandene benutzerdefinierte Materialien und Symbole werden beibehalten. Sie sind jedoch bis zum Upgrade weniger optimal. Verwenden Sie den ButtonConfigHelperMigrationHandler, um die Ressourcen auf allen Schaltflächen im Projekt auf das neue empfohlene Format zu aktualisieren. (Mixed Reality Toolkit –> Hilfsprogramme –> Migrationsfenster –> Migrationshandlerauswahl –> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Dialogfeld

Wenn während der Migration kein Symbol im Standardsymbolsatz gefunden wird, wird in MixedRealityToolkit.Generated/CustomIconSets ein benutzerdefinierter Symbolsatz erstellt. Ein Dialogfeld zeigt an, dass dies geschehen ist.

Benachrichtigung über benutzerdefinierte Symbole

Aktualisieren von 2.2.0 auf 2.3.0

API-Änderungen in 2.3.0

ControllerPoseSynchronizer

Das Private ControllerPoseSynchronizer.handedness-Feld wurde als veraltet markiert. Dies sollte minimale Auswirkungen auf Anwendungen haben, da das Feld außerhalb seiner Klasse nicht sichtbar ist.

Der Setter der öffentlichen ControllerPoseSynchronizer.Handedness-Eigenschaft wurde entfernt (#7012).

MSBuild für Unity

Diese Version von MRTK verwendet eine neuere Version von MSBuild für Unity als frühere Versionen. Wenn während des Ladens des Projekts die ältere Version im Unity Package Manager-Manifest aufgeführt ist, wird das Konfigurationsdialogfeld mit aktivierter Option MSBuild für Unity aktivieren angezeigt. Durch anwenden wird ein Upgrade durchgeführt.

ScriptingUtilities

Die ScriptingUtilities-Klasse wurde als veraltet markiert und in der Microsoft.MixedReality.Toolkit.Editor.Utilities-Assembly durch ScriptUtilities ersetzt. Die neue Klasse optimiert das vorherige Verhalten und fügt Unterstützung für das Entfernen von Skriptdefinitionen hinzu.

Während vorhandener Code in Version 2.3.0 weiterhin funktioniert, wird empfohlen, auf die neue Klasse zu aktualisieren.

ShellHandRayPointer

Die Member lineRendererSelected und lineRendererNoTarget der ShellHandRayPointer-Klasse wurden durch lineMaterialSelected bzw. lineMaterialNoTarget ersetzt (#6863).

Ersetzen Sie lineRendererSelected durch lineMaterialSelected und/oder lineRendererNoTarget durch lineMaterialNoTarget, um Kompilierfehler zu beheben.

Raumbeobachter StartupBehavior

Räumliche Beobachter, die auf der BaseSpatialObserver -Klasse basieren, berücksichtigen jetzt den Wert von StartupBehavior, wenn sie wieder aktiviert werden (#6919).

Es sind keine Änderungen erforderlich, um von diesem Fix zu profitieren.

Prefabs für UX-Steuerelemente, die für die Verwendung von PressableButton aktualisiert wurden

Die folgenden Prefabs verwenden jetzt die PressableButton-Komponente anstelle von TouchHandler für die nahe Interaktion (7070).

  • AnimationButton
  • Schaltfläche
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • ToggleSwitch
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

Aufgrund dieser Änderung muss der Anwendungscode möglicherweise aktualisiert werden.

WindowsMixedRealityUtilities-Namespace

Der Namespace von WindowsMixedRealityUtilities wurde von Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input in Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863) geändert.

Aktualisieren Sie #using Anweisungen, um Kompilierfehler zu beheben.

Aktualisieren von 2.1.0 auf 2.2.0

API-Änderungen in Version 2.2.0

IMixedRealityBoundarySystem.Contains

Diese Methode hat zuvor eine bestimmte, von Unity definierte experimentelle Enumeration aufgenommen. Jetzt wird eine mrTK-definierte Enumeration aufgenommen, die mit der Unity-Enumeration identisch ist. Diese Änderung hilft bei der Vorbereitung von MRTK für die zukünftigen Begrenzungs-APIs von Unity.

MixedRealityServiceProfileAttribute

Um die Anforderungen für die Unterstützung eines Profils besser zu beschreiben, wurde MixedRealityServiceProfileAttribute aktualisiert, um eine optionale Auflistung ausgeschlossener Typen hinzuzufügen. Im Rahmen dieser Änderung wurde die ServiceType-Eigenschaft von Type in Type[] geändert und in RequiredTypes umbenannt.

Eine zweite Eigenschaft, ExcludedTypes, wurde ebenfalls hinzugefügt.

Aktualisieren von 2.0.0 auf 2.1.0

API-Änderungen in 2.1.0

BaseNearInteractionTouchable

Wurde BaseNearInteractionTouchable geändert, um die OnValidate Methode als virtuell zu markieren. Klassen, die erweitern BaseNearInteractionTouchable (z. B. NearInteractionTouchableUnityUI) wurden aktualisiert, um diese Änderung widerzuspiegeln.

ColliderNearInteractionTouchable

Die ColliderNearInteractionTouchable-Klasse ist veraltet. Aktualisieren Sie Codeverweise, um zu verwenden BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Hinzugefügt

IMixedRealityMouseDeviceManager und Eigenschaften hinzugefügt CursorSpeedWheelSpeed wurden. Mit diesen Eigenschaften können Anwendungen einen Multiplikatorwert angeben, um den die Geschwindigkeit des Cursors bzw. des Rads skaliert wird.

Dies ist ein Breaking Change und erfordert, dass vorhandene Mausgeräte-Manager-Implementierungen geändert werden.

Hinweis

Diese Änderung ist nicht abwärtskompatibel mit Version 2.0.0.

Als veraltet markiert

Die MouseInputProfile Eigenschaft wurde als veraltet markiert und wird aus einer zukünftigen Version von Microsoft Mixed Reality Toolkit entfernt. Es wird empfohlen, diese Eigenschaft nicht mehr im Anwendungscode zu verwenden.

Interaktionsfähig

Die folgenden Methoden und Eigenschaften sind veraltet und werden aus einer zukünftigen Version von Microsoft Mixed Reality Toolkit entfernt. Es wird empfohlen, den Anwendungscode gemäß der Anleitung zu aktualisieren, die im Veraltet-Attribut enthalten und in der Konsole angezeigt wird.

  • 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

Die NearInteractionTouchableSurface -Klasse wurde hinzugefügt und dient nun als Basisklasse für NearInteractionTouchable und NearInteractionTouchableUnityUI.

Profiländerungen in 2.1.0

Handverfolgungsprofil

Die Handgitter- und Gelenkvisualisierungen verfügen jetzt über einen separaten Editor und einen separaten Player.The hand mesh and joint visualizations now have a separate editor and player settings. Das Handverfolgungsprofil wurde aktualisiert, damit diese Visualisierungen auf festgelegt werden können. Nichts, Alles, Editor oder Player.

Handvisualisierungsmodi

Benutzerdefinierte Handnachverfolgungsprofile müssen möglicherweise aktualisiert werden, damit sie ordnungsgemäß mit Version 2.1.0 funktionieren.

Hinweis

Diese Änderung ist nicht abwärtskompatibel mit Version 2.0.0.

Eingabesimulationsprofil

Das Eingabesimulationssystem wurde aktualisiert, wodurch einige Einstellungen im Eingabesimulationsprofil geändert werden. Einige Änderungen können nicht automatisch migriert werden, und Benutzer stellen möglicherweise fest, dass Profile Standardwerte verwenden.

  1. Alle KeyCode- und Maustastenbindungen im Profil wurden durch eine generische KeyBinding Struktur ersetzt, die den Bindungstyp (Schlüssel oder Maus) sowie den tatsächlichen Bindungscode (KeyCode bzw. Maustastennummer) speichert. Die Struktur verfügt über einen eigenen Inspektor, der eine einheitliche Anzeige ermöglicht und ein "Auto-Bind"-Tool bietet, mit dem Sie schnell Tastenbindungen festlegen können, indem Sie die jeweilige Taste drücken, anstatt aus einer riesigen Dropdownliste auszuwählen.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle war zuvor in der MouseLookButton Enumeration als InputSimulationMouseButton.Focusedenthalten, es ist jetzt eine separate Option. Wenn diese Option aktiviert ist, dreht sich die Kamera nach dem Loslassen der Taste mit der Maus, bis die Escapetaste gedrückt wird.

  3. HandDepthMultiplier Der Standardwert wurde von 0,1 auf 0,03 herabgesetzt, um einige Änderungen an der Eingabesimulation zu berücksichtigen. Wenn die Kamera beim Scrollen zu schnell bewegt wird, versuchen Sie, diesen Wert zu senken.

  4. Tasten zum Drehen der Hände wurden entfernt, die Handdrehung wird nun auch mit der Maus gesteuert. Das Halten HandRotateButton (STRG) zusammen mit der linken/rechten Bearbeitungstaste (LShift/Space) ermöglicht die Handdrehung.

  5. Eine neue Achse "UpDown" wurde in die Eingabeachsenliste eingeführt. Dadurch wird die Kamerabewegung in der vertikalen und standardmäßig auf Q/E-Tasten sowie die Controllertriggerschaltflächen gesteuert.

Weitere Informationen zu diesen Änderungen finden Sie im Artikel zum Eingabesimulationsdienst .

Mausdatenanbieterprofil

Das Mausdatenanbieterprofil wurde aktualisiert, um die neuen CursorSpeed Eigenschaften und WheelSpeed verfügbar zu machen. Vorhandene benutzerdefinierte Profile werden automatisch mit Standardwerten versehen. Wenn das Profil gespeichert wird, werden diese neuen Werte beibehalten.

Controllerzuordnungsprofil

Einige Achsen und Eingabetypen wurden in Version 2.1.0 aktualisiert, insbesondere rund um die OpenVR-Plattform. Wählen Sie beim Upgrade unbedingt MixedRealityToolkit –> Hilfsprogramme –> Update –> Controllerzuordnungsprofile aus. Dadurch werden alle benutzerdefinierten Controllerzuordnungsprofile mit den aktualisierten Achsen und Daten aktualisiert, während Ihre benutzerdefinierten Eingabeaktionen intakt bleiben.

Aktualisieren von RC2 auf 2.0.0

Zwischen den Versionen RC2 und 2.0.0 des Microsoft Mixed Reality Toolkits wurden Änderungen vorgenommen, die sich auf vorhandene Projekte auswirken können. In diesem Dokument werden diese Änderungen und das Aktualisieren von Projekten auf version 2.0.0 beschrieben.

API-Änderungen in 2.0.0

Seit der Veröffentlichung von RC2 gab es eine Reihe von API-Änderungen, einschließlich einiger, die vorhandene Projekte unterbrechen können. In den folgenden Abschnitten werden die Änderungen beschrieben, die zwischen den Releases RC2 und 2.0.0 aufgetreten sind.

MixedRealityToolkit

Die folgenden öffentlichen Eigenschaften für das MixedRealityToolkit-Objekt sind veraltet.

  • RegisteredMixedRealityServices enthält nicht mehr die Sammlung von registrierten Erweiterungsdiensten und Datenanbietern.

Verwenden Sie MixedRealityServiceRegistry.TryGetService<T>, um auf Erweiterungsdienste zuzugreifen. Um auf Datenanbieter zuzugreifen, wandeln Sie den Dienst instance in umIMixedRealityDataProviderAccess, und verwenden Sie GetDataProvider<T>.

Verwenden Sie MixedRealityServiceRegistry oder CoreServices stattdessen für die folgenden veralteten Eigenschaften

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

CoreServices

Die CoreServices -Klasse ist der Ersatz für die statischen Systemaccessoren (z. B. BoundarySystem), die MixedRealityToolkit sich im -Objekt befinden.

Wichtig

Die MixedRealityToolkit Systemaccessoren sind in Version 2.0.0 veraltet und werden in einer zukünftigen Version von MRTK entfernt.

Das folgende Codebeispiel veranschaulicht das alte und das neue Muster.

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

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

Wenn Sie die neue CoreSystem-Klasse verwenden, stellen Sie sicher, dass Der Anwendungscode nicht aktualisiert werden muss, wenn Sie die Anwendung so ändern, dass sie eine andere Dienstregistrierungsstelle (z. B. einen der experimentellen Dienst-Manager) verwendet.

IMixedRealityRaycastProvider

Mit dem Hinzufügen von IMixedRealityRaycastProvider wurde das Konfigurationsprofil des Eingabesystems geändert. Wenn Sie über ein benutzerdefiniertes Profil verfügen, erhalten Sie möglicherweise die Fehler in der folgenden Abbildung, wenn Sie Ihre Anwendung ausführen.

Auswählen des Raycast-Anbieters 1

Um diese zu beheben, fügen Sie ihrem Eingabesystemprofil einen IMixedRealityRaycastProvider-instance hinzu.

Auswählen des Raycast-Anbieters 2

Ereignissystem

  • Die IMixedRealityEventSystem alten API-Methoden Register und Unregister wurden als veraltet markiert. Sie werden aus Gründen der Abwärtskompatibilität beibehalten.
  • InputSystemGlobalListener wurde als veraltet markiert. Die Funktionalität wurde nicht geändert.
  • BaseInputHandler Die Basisklasse wurde von InputSystemGlobalListener in InputSystemGlobalHandlerListenergeändert. Dies ist eine breaking change für alle Nachkommen von BaseInputHandler.

Motivation für den Wandel

Die alte Ereignissystem-API RegisterUnregister und kann möglicherweise mehrere Probleme in der Laufzeit verursachen, Standard:

  • Wenn eine Komponente für globale Ereignisse registriert wird, empfängt sie globale Eingabeereignisse aller Typen.
  • Wenn eine der Komponenten eines -Objekts für globale Eingabeereignisse registriert wird, erhalten alle Komponenten dieses Objekts globale Eingabeereignisse aller Typen.
  • Wenn zwei Komponenten für dasselbe Objekt globale Ereignisse registrieren und eine dann in der Laufzeit deaktiviert ist, wird die zweite Komponente nicht mehr globalen Ereignissen empfangen.

Neue API RegisterHandler und UnregisterHandler:

  • Bietet eine explizite und präzise Kontrolle darüber, auf welche Eingabeereignisse global lauscht werden soll und welche fokussiert sein sollten.
  • Ermöglicht es mehreren Komponenten im selben Objekt, globale Ereignisse unabhängig voneinander zu lauschen.

Migrieren

  • Wenn Sie die API bereits direkt aufgerufen Register/Unregister haben, ersetzen Sie diese Aufrufe durch Aufrufe von .RegisterHandler/UnregisterHandler Verwenden Sie Handlerschnittstellen, die Sie als generische Parameter implementieren. Wenn Sie mehrere Schnittstellen implementieren, von denen mehrere globale Eingabeereignisse lauschen, rufen Sie mehrmals auf RegisterHandler .
  • Wenn Sie von InputSystemGlobalListenergeerbt haben, ändern Sie die Vererbung in InputSystemGlobalHandlerListener. Implementieren und RegisterHandlersUnregisterHandlers abstrakte Methoden. Im Implementierungsaufruf inputSystem.RegisterHandler (inputSystem.UnregisterHandler), um sich auf allen Handlerschnittstellen zu registrieren, auf die Sie globale Ereignisse überwachen möchten.
  • Wenn Sie von BaseInputHandlergeerbt haben, implementieren Sie RegisterHandlers und UnregisterHandlers abstrakte Methoden (identisch mit für InputSystemGlobalListener).

Migrationsbeispiele

// 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);
        }
    }
}

Räumliche Wahrnehmung

Die Schnittstellen IMixedRealitySpatialAwarenessSystem und IMixedRealitySpatialAwarenessObserver haben mehrere Breaking Changes vorgenommen, wie unten beschrieben.

Änderungen

Die folgenden Methoden wurden umbenannt, um ihre Verwendung besser zu beschreiben.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent wurde umbenannt in, um IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent die Verwendung zu verdeutlichen.

Erweiterungen

Basierend auf Kundenfeedback wurde Unterstützung für das einfache Entfernen von zuvor beobachteten räumlichen Bewusstseinsdaten hinzugefügt.

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

Solver

Einige Solverkomponenten und die SolverHandler-Manager-Klasse wurden geändert, um verschiedene Fehler zu beheben und eine intuitivere Verwendung zu ermöglichen.

SolverHandler

  • Klasse wird nicht mehr von erweitert ControllerFinder
  • TrackedObjectToReference öffentliche Eigenschaft ist veraltet und wurde umbenannt in TrackedTargetType
  • TrackedObjectType Werte für den linken & rechten Controller veraltet. Verwenden Sie MotionController stattdessen Werte oder, HandJoint und aktualisieren Sie eine neue TrackedHandedness Eigenschaft, um die Nachverfolgung auf den linken oder rechten Controller zu beschränken.

InBetween

  • TrackedObjectForSecondTransform öffentliche Eigenschaft ist veraltet und wurde umbenannt in SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() wurde entfernt. Um den Solver zu aktualisieren, ändern Sie die öffentlichen Eigenschaften (d. h SecondTrackedObjectType. )

SurfaceMagnetism

  • MaxDistance öffentliche Eigenschaft ist veraltet und wurde umbenannt in MaxRaycastDistance
  • CloseDistance öffentliche Eigenschaft ist veraltet und wurde umbenannt in ClosestDistance
  • Standardwert für RaycastDirectionMode ist jetzt TrackedTargetForward der Raycast in Richtung der nachverfolgten Zieltransformation vorwärts
  • OrientationModeDie Enumerationswerte Vertical und Fullwurden in und SurfaceNormal umbenanntTrackedTarget.
  • KeepOrientationVertical öffentliche Eigenschaft wurde hinzugefügt, um zu steuern, ob die Ausrichtung des zugeordneten GameObject vertikal bleibt.

Schaltflächen

  • PressableButton Jetzt ist DistanceSpaceMode die Eigenschaft auf Local Standard festgelegt. Dadurch können Schaltflächen skaliert werden, während sie weiterhin gedrückt werden können.

Abschneidende Kugel

Die ClippingSphere-Schnittstelle wurde in Spiegel die APIs in ClippingBox und ClippingPlane geändert.

Die Radius-Eigenschaft von ClippingSphere wird nun implizit basierend auf der Transformationsskala berechnet. Bevor Entwickler den Radius der ClippingSphere im Inspektor angeben müssen. Wenn Sie den Radius ändern möchten, aktualisieren Sie einfach die Transformationsskala der Transformation wie gewohnt.

NearInteractionTouchable und PokePointer

  • NearInteractionTouchable verarbeitet keine Unity UI-Canvas-Toucheingaben mehr. Die NearInteractionTouchableUnityUI-Klasse muss jetzt für Touchables der Unity-Benutzeroberfläche verwendet werden.
  • ColliderNearInteractionTouchable ist die neue Basisklasse für Touchables, die auf Collidern basieren, d. h. jedes Touchable außer NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront wurde verschoben und umbenannt in PokePointer.TouchableDistance Dies ist die Entfernung, die der PokePointer mit Touchables interagieren kann. Früher hatte jedes Anfassbare seine eigene maximale Interaktionsdistanz, aber jetzt ist dies im PokePointer definiert, was eine bessere Optimierung ermöglicht.
  • BaseNearInteractionTouchable.DistBack wurde umbenannt in PokeThreshold Dies macht deutlich, dass PokeThreshold das Pendant zu DebounceThreshold ist. Ein Touchable wird aktiviert, wenn der PokeThreshold gekreuzt wird, und wird freigegeben, wenn DebounceThreshold gekreuzt wird.

ReadOnlyAttribute

Der Microsoft.MixedReality.Toolkit Namespace wurde hinzugefügt, BeginReadOnlyGroupAttributeund ReadOnlyAttributeEndReadOnlyGroupAttribute.

PointerClickHandler

Die PointerClickHandler-Klasse ist veraltet. Sollte PointerHandler stattdessen verwendet werden, bietet es die gleiche Funktionalität.

Unterstützung für HoloLens-Klicker

Die Controllerzuordnungen des HoloLens-Clickers haben sich von einem nicht behandelten WindowsMixedRealityController zu einem nicht behandelten WindowsMixedRealityGGVHandgeändert. Um dies zu berücksichtigen, wird ein automatischer Updater ausgeführt, wenn Sie Ihr ControllerMapping-Profil zum ersten Mal öffnen. Öffnen Sie alle benutzerdefinierten Profile mindestens einmal nach dem Upgrade auf 2.0.0, um diesen einmaligen Migrationsschritt auszulösen.

InteragierbaresHighlight

Die InteractableHighlight-Klasse ist veraltet. Stattdessen sollten die InteractableOnFocus Klasse und FocusInteractableStates das Asset verwendet werden. Um ein neues Theme Objekt für zu erstellen, klicken Sie mit der InteractableOnFocusrechten Maustaste in das Projektfenster, und wählen Sie Erstellen> Mixed RealityInteraktives>Design des Toolkits>aus.

HandInteractionPanZoom

HandInteractionPanZoom wurde in den Ui-Namespace verschoben, da es sich nicht um eine Eingabekomponente handelte. HandPanEventData wurde ebenfalls in diesen Namespace verschoben und vereinfacht, um anderen Benutzeroberflächenereignisdaten zu entsprechen.

Änderungen des Assemblynamens in 2.0.0

Im Release 2.0.0 wurden alle offiziellen Mixed Reality Toolkitassemblynamen und die zugehörigen Assemblydefinitionsdateien (ASMDEF) so aktualisiert, dass sie dem folgenden Muster entsprechen.

Microsoft.MixedReality.Toolkit[.<name>]

In einigen Fällen wurden mehrere Assemblys zusammengeführt, um eine bessere Einheit ihrer Inhalte zu schaffen. Wenn Ihr Projekt benutzerdefinierte ASMDEF-Dateien verwendet, müssen diese möglicherweise aktualisiert werden.

In den folgenden Tabellen wird beschrieben, wie die RC2-Asmdef-Dateinamen dem Release 2.0.0 zugeordnet werden. Alle Assemblynamen entsprechen dem Asmdef-Dateinamen.

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 Entfernen Sie 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.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.UX.Interactables.asmdef Microsoft.MixedReality.Toolkit.Demos.UX.Interactables.asmdef