Aktualisieren von früheren Versionen – MRTK2

Suchen nach der aktuellen Version

Folgen Sie den folgenden Anweisungen, um herauszufinden, welche Version von MRTK Sie derzeit verwenden:

  1. Öffnen Ihres MRTK-Projekts in Unity
  2. Navigieren Sie im Projektfenster zum Ordner "MixedRealityToolkit"
  3. Öffnen Der Datei namens "Version"

Wenn die oben genannte Datei und der ordner nicht vorhanden ist, befinden Sie sich in einer neueren 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 mit einem Text-Editor zu öffnen.
  3. Suchen Sie nach der Zeile mit dem Wort "Version:"

Upgrade auf eine neue Version von MRTK

Es wird dringend empfohlen, das Migrationstool auszuführen, nachdem das MRTK-Update zum automatischen Beheben und Upgrade von veralteten Komponenten abgerufen und änderungen angepasst wurde. Das Migrationstool ist Teil des Tools-Pakets .

Die nachstehenden Anweisungen beschreiben den Upgradepfad 2.4.0 bis 2.5.0. Wenn Sich Ihr Projekt auf 2.3.0 oder früher befindet, lesen Sie die Änderungen zwischen Versionen , um den Upgradepfad zu verstehen oder die Anweisungen der vorherigen Version zu lesen, um ein Versions-nach-Version-Upgrade durchzuführen.

Mixed Reality Feature-Tool

Die einfachste Möglichkeit zum Upgrade von MRTK auf eine neuere Version von MRTK verwendet das Mixed Reality Featuretool, um die neuesten Pakete herunterzuladen und direkt in Ihr Unity-Projekt zu laden.

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

Unity-Asset-Dateien (.unitypackage)

Ein weiterer Upgradepfad besteht darin, MRTK Unity-Pakete manuell herunterzuladen und auf Ihr Projekt anzuwenden. Siehe die folgenden Schritte,

  1. Speichern Sie eine Kopie Ihres aktuellen Projekts, wenn Sie an einem beliebigen Punkt in den Upgradeschritten auf alle Snags klicken.
  2. Unity schließen
  3. Löschen Sie im Ordner "Ressourcen " die folgenden MRTK-Ordner zusammen mit ihren META-Dateien (das Projekt hat möglicherweise nicht alle aufgelisteten Ordner)
    • MRTK/Core
    • MRTK/Beispiele
    • MRTK/Erweiterungen
    • MRTK/Anbieter
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Wichtig

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

    • MRTK/Tools

    Wichtig

    Löschen Sie nicht den MixedRealityToolkit.Generierten Ordner oder die META-Datei.

  4. Löschen des Bibliotheksordners

    Wichtig

    Einige Unity-Tools wie Unity Collab speichern Konfigurationsinformationen im Ordner "Bibliothek". Wenn Sie ein Tool verwenden, das dies ausführt, kopieren Sie zuerst den Datenordner des Tools aus der Bibliothek, bevor Sie es löschen, und stellen Sie sie dann nach der Wiederherstellung der Bibliothek wieder her.

  5. Öffnen Sie das Projekt in Unity erneut.
  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 Bibliotheksordner (lesen Sie zuerst die Notiz unten!). Dieser Schritt ist erforderlich, um Unity zum Aktualisieren der Ressourcendatenbank zu erzwingen 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. Dies löscht die Hauptkamera, wird jedoch im nächsten Schritt erneut erstellt. Wenn alle Eigenschaften der Hauptkamera manuell geändert wurden, müssen diese manuell angewendet werden, sobald die neue Kamera erstellt wird.
    • Select MixedRealityToolkit –> Hinzufügen zu Szene und Konfigurieren
    • Wählen Sie MixedRealityToolkit -> Hilfsprogramme> - Update> - Controllerzuordnungsprofile (nur einmal ausgeführt werden müssen) – 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 das neueste aktualisiert wird. Das Migrationsfenster enthält eine Reihe verschiedener Migrationshandler, die jeweils selbst ausgeführt werden müssen. Dieser Schritt umfasst:
    • 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 für Objekte überprüft, die migriert werden sollen).
    • Klicken Sie auf die Schaltfläche "Migrieren", die aktiviert werden soll, wenn migrierte Objekte gefunden wurden.
    • Wiederholen Sie die vorherigen drei Schritte für jede der Migrationshandler innerhalb des Dropdowns. (Sehen Sie sich dieses Problem an, das Arbeit umfasst, die getan werden kann, um diesen Migrationsprozess in einer zukünftigen Version zu vereinfachen)

Wechseln von Unity-Ressourcendateien zu Mixed Reality Featuretool

Das Wechseln von Unity-Ressourcendateien zu Mixed Reality Featuretoolpaketen bietet eine Reihe von Vorteilen:

  • Einfachere Aktualisierung
  • Schnellere Kompilierungszeiten
  • Weniger Projekte in der Visual Studio-Lösung

Wenn Sie das Mixed Reality Featuretool verwenden, ist eine einmalige Gruppe manueller Schritte erforderlich.

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

    Wichtig

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

    • MRTK/Tools

    Wichtig

    Löschen Sie nicht den MixedRealityToolkit.Generierten Ordner oder die META-Datei.

  4. Löschen des Bibliotheksordners

    Wichtig

    Einige Unity-Tools wie Unity Collab speichern Konfigurationsinformationen im Ordner "Bibliothek". Wenn Sie ein Tool verwenden, das dies ausführt, kopieren Sie zuerst den Datenordner des Tools aus der Bibliothek, bevor Sie es löschen, und stellen Sie sie dann nach der Wiederherstellung der Bibliothek wieder her.

  5. Öffnen Sie das Projekt in Unity erneut.

Nachdem die vorherigen Schritte ausgeführt wurden, führen Sie das Mixed Reality Featuretool aus, und importieren Sie die gewünschte Version des Mixed Reality Toolkits.

Aktualisieren von 2.3.0 auf 2.4.0

Ordner benenntAPI-Änderungen um

Ordnerbenennungen in 2.4.0

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

Vorheriger Ordner Neuer Ordner
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Beispiele 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

Die MixedRealityToolkit.Generated vom Kunden generierten Dateien und bleiben unverändert.

Blickeinrichtung in 2.4.0

Diese Version von MRTK ändert die schritte, die für die Einrichtung von Augenblicken erforderlich sind. Das Kontrollkästchen "IsEyeTrackingEnabled" finden Sie in den Blickeinstellungen des Eingabezeigerprofils. Wenn Sie dieses Kontrollkästchen aktivieren, wird der Blick auf Augenbasis aktiviert, sondern der standardmäßige Blick auf Kopf.

Weitere Informationen zu diesen Änderungen und vollständigen Anweisungen für die Eye Tracking-Einrichtung finden Sie im Eye Tracking-Artikel.

Blickzeigerverhalten in 2.4.0

Das Standardverhalten des Blickzeigers wurde geändert, um dem Standardzeigerverhalten des Kopfblicks zu entsprechen. 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 in den Augen und Händen Artikel.

API-Änderungen in 2.4.0

Benutzerdefinierte Controllerklassen

Zuvor mussten benutzerdefinierte Controllerklassen definiert werden SetupDefaultInteractions(Handedness). Diese Methode wurde in 2.4 veraltet, da der Händigkeitsparameter mit der Eigenenhändigkeit der Controllerklasse redundant war. Die neue Methode hat keine Parameter. Darüber hinaus haben viele Controllerklassen die gleiche Weise definiert (AssignControllerMappings(DefaultInteractions);), sodass der vollständige Aufruf in BaseController eine optionale Überschreibung statt erforderlich umgewandelt wurde.

Eye Gaze-Eigenschaften

Die Eigenschaft aus GazeProvider der UseEyeTracking Implementierung IMixedRealityEyeGazeProvider wurde umbenannt in IsEyeTrackingEnabled.

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 gekennzeichnet. Bitte verwenden IsMethodAvailableSie , IsPropertyAvailable oder IsTypeAvailable.

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

Es gibt keine Pläne zum Hinzufügen von Eigenschaften zu WindowsApiChecker für zukünftige API-Vertragsversionen.

GltfMeshPrimitiveAttributes schreibgeschützt

Die gltf-Gittergrundattribute, die zum Festlegen verwendet werden, sind sie jetzt schreibgeschützt. Ihre Werte werden einmal festgelegt, wenn sie deserialisiert werden.

Symbolmigration für benutzerdefinierte Schaltflächen

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

Dialogfeld

Wenn ein Symbol während der Migration nicht im Standardsymbolsatz gefunden wird, wird ein benutzerdefinierter Symbolsatz in MixedRealityToolkit.Generated/CustomIconSets erstellt. Ein Dialogfeld gibt an, dass dies stattgefunden hat.

Benutzerdefinierte Symbolbenachrichtigung

Aktualisieren von 2.2.0 auf 2.3.0

API-Änderungen in 2.3.0

ControllerPoseSynchronizer

Das private ControllerPoseSynchronizer.handedness-Feld wurde als veraltet gekennzeichnet. Dies sollte minimale Auswirkungen auf Anwendungen haben, da das Feld außerhalb der 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 die ältere Version während des Projektladevorgangs im Unity Package Manger-Manifest aufgeführt ist, wird das Konfigurationsdialogfeld angezeigt, wobei die Option "MSBuild für Unity aktivieren" aktiviert ist. Die Anwendung führt ein Upgrade aus.

ScriptingUtilities

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

Während der vorhandene Code weiterhin in Version 2.3.0 funktioniert, empfiehlt es sich, auf die neue Klasse zu aktualisieren.

ShellHandRayPointer

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

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

Räumlicher Beobachter StartupBehavior

Raumbeobachter, die auf der BaseSpatialObserver Klasse gebaut wurden, honorieren nun den Wert von StartupBehavior, wenn sie erneut aktiviert sind (#6919).

Es sind keine Änderungen erforderlich, um diesen Fix zu nutzen.

UX-Steuerelement prefabs aktualisiert, um PressableButton zu verwenden

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

Der Anwendungscode erfordert möglicherweise eine Aktualisierung aufgrund dieser Änderung.

WindowsMixedRealityUtilities-Namespace

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

Aktualisieren Sie #using Anweisungen, um Kompilierungsfehler zu beheben.

Aktualisieren von 2.1.0 auf 2.2.0

API-Änderungen in 2.2.0

IMixedRealityBoundarySystem.Contains

Diese Methode nahm zuvor eine bestimmte, unity-definierte experimentelle Enumeration auf. Es braucht nun eine MRTK-definierte Enumeration, die mit der Unity-Enumeration identisch ist. Diese Änderung hilft bei der Vorbereitung von MRTK für die zukünftigen Grenz-APIs von Unity.

MixedRealityServiceProfileAttribute

Um die Anforderungen für die Unterstützung eines Profils besser zu beschreiben, wurde das 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

Die BaseNearInteractionTouchable Methode wurde geändert, um die OnValidate Methode als virtual zu kennzeichnen. Klassen, die erweitern BaseNearInteractionTouchable (z. B. ) NearInteractionTouchableUnityUIwurden aktualisiert, um diese Änderung widerzuspiegeln.

ColliderNearInteractionTouchable

Die ColliderNearInteractionTouchable-Klasse ist veraltet. Bitte aktualisieren Sie Codeverweise auf die Verwendung BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Hinzugefügt

IMixedRealityMouseDeviceManagerwurde hinzugefügt und WheelSpeed Eigenschaften hinzugefügtCursorSpeed. Mit diesen Eigenschaften können Anwendungen einen Multiplizierwert angeben, mit dem die Geschwindigkeit des Cursors und des Rads skaliert wird.

Dies ist eine bahnbrechende Änderung und erfordert vorhandene Implementierungen des Mausgeräte-Managers, um geändert zu werden.

Hinweis

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

Als veraltet markiert

Die MouseInputProfile Eigenschaft wurde als veraltet gekennzeichnet und wird aus einer zukünftigen Version von Microsoft Mixed Reality Toolkit entfernt. Es wird empfohlen, dass der Anwendungscode diese Eigenschaft nicht mehr verwendet.

Interaktionsfähig

Die folgenden Methoden und Eigenschaften wurden veraltet und werden aus einer zukünftigen Version von Microsoft Mixed Reality Toolkit entfernt. Die Empfehlung besteht darin, den Anwendungscode anhand der Anleitungen zu aktualisieren, die im veralteten Attribut enthalten sind und in der Konsole angezeigt werden.

  • 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 jetzt als Basisklasse für NearInteractionTouchable und NearInteractionTouchableUnityUI.

Profiländerungen in 2.1.0

Handverfolgungsprofil

Die Handgitter- und Gelenkvisualisierungen verfügen jetzt über eine separate Editor- und Spielereinstellungen. Das Handverfolgungsprofil wurde aktualisiert, damit diese Visualisierungen festgelegt werden können; Nothing, Alles, Editor oder Player.

Handvisualisierungsmodi

Benutzerdefinierte Handverfolgungsprofile müssen möglicherweise aktualisiert werden, um mit Version 2.1.0 ordnungsgemäß zu funktionieren.

Hinweis

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

Eingabesimulationsprofil

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

  1. Alle KeyCode- und Maustastenbindungen im Profil wurden durch eine generische KeyBinding Struktur ersetzt, die den Bindungstyp (Taste oder Maus) sowie den tatsächlichen Bindungscode (KeyCode oder Maustaste) speichert. Die Struktur verfügt über einen eigenen Inspektor, der die einheitliche Anzeige ermöglicht und ein Tool zum schnellen Festlegen von Tastenbindungen bietet, indem sie die jeweilige Taste drücken, anstatt aus einer riesigen Dropdownliste auszuwählen.

    • FastControlKey
    • UmschaltenLeftHandKey
    • UmschaltenRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle war zuvor in der MouseLookButton Aufzählung enthalten, da InputSimulationMouseButton.Focusedes jetzt eine separate Option ist. Wenn die Kamera aktiviert ist, wird die Kamera nach dem Loslassen der Taste mit der Maus gedreht, bis die Escapetaste gedrückt wird.

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

  4. Die Tasten zum Drehen der Hände wurden entfernt, die Handdrehung wird nun auch von der Maus gesteuert. Durch halten HandRotateButton (STRG) zusammen mit der Manipulationstaste links/rechts (LShift/Space) wird die Handdrehung aktiviert.

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

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

Mausdatenanbieterprofil

Das Profil des Mausdatenanbieters wurde aktualisiert, um die neuen CursorSpeed und WheelSpeed eigenschaften verfügbar zu machen. Vorhandene benutzerdefinierte Profile weisen automatisch Standardwerte auf. Wenn das Profil gespeichert wird, werden diese neuen Werte beibehalten.

Controllerzuordnungsprofil

Einige Achsen und Eingabetypen wurden in 2.1.0 aktualisiert, insbesondere um die OpenVR-Plattform. Bitte achten Sie darauf, mixedRealityToolkit - Dienstprogramme ->> Update -> Controllerzuordnungsprofile beim Upgrade auszuwählen. 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 von Microsoft Mixed Reality Toolkit wurden Änderungen vorgenommen, die sich auf vorhandene Projekte auswirken können. In diesem Dokument werden diese Änderungen und das Aktualisieren von Projekten auf die Version 2.0.0 beschrieben.

API-Änderungen in 2.0.0

Seit der Veröffentlichung von RC2 gibt 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 Versionen RC2 und 2.0.0 aufgetreten sind.

MixedRealityToolkit

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

  • RegisteredMixedRealityServices enthält nicht mehr die Sammlung registrierter Erweiterungendienste und Datenanbieter.

Um auf Erweiterungsdienste zuzugreifen, verwenden Sie MixedRealityServiceRegistry.TryGetService<T>. Um auf Datenanbieter zuzugreifen, wandeln Sie die Dienstinstanz in IMixedRealityDataProviderAccess und verwenden sie GetDataProvider<T>.

Verwenden 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 Systemzugriffer (ex: BoundarySystem), die MixedRealityToolkit im Objekt gefunden werden.

Wichtig

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

Im folgenden Codebeispiel wird das alte und das neue Muster veranschaulicht.

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

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

Durch die Verwendung der neuen CoreSystem-Klasse wird sichergestellt, dass der Anwendungscode nicht aktualisiert werden muss, wenn Sie die Anwendung ändern, um eine andere Dienstregistrierungsstelle zu verwenden (ex: eines der experimentellen Dienstmanager).

IMixedRealityRaycastProvider

Mit der Ergänzung des IMixedRealityRaycastProviders wurde das Eingabesystemkonfigurationsprofil geändert. Wenn Sie über ein benutzerdefiniertes Profil verfügen, erhalten Sie möglicherweise die Fehler im folgenden Bild, wenn Sie Ihre Anwendung ausführen.

Auswählen des Raycast-Anbieters 1

Um dies zu beheben, fügen Sie ihrer Eingabesystemprofil eine IMixedRealityRaycastProvider-Instanz hinzu.

Auswählen des Raycast-Anbieters 2

Ereignissystem

  • Die IMixedRealityEventSystem alten API-Methoden Register und Unregister wurden als veraltet gekennzeichnet. Sie bleiben für die Abwärtskompatibilität erhalten.
  • InputSystemGlobalListener wurde als veraltet markiert. Die Funktionalität wurde nicht geändert.
  • BaseInputHandler Die Basisklasse wurde von zu InputSystemGlobalListenerInputSystemGlobalHandlerListener" geändert. Dies ist eine unterbrechungsende Änderung für alle Nachkommen von BaseInputHandler.

Motivation hinter der Änderung

Die alte Ereignissystem-API Register und Unregister könnte möglicherweise mehrere Probleme in der Laufzeit verursachen, Haupt:

  • Wenn eine Komponente für globale Ereignisse registriert wird, würde es globale Eingabeereignisse aller Typen erhalten.
  • Wenn eine der Komponenten eines Objekts für globale Eingabeereignisse registriert wird, erhalten alle Komponenten dieses Objekts globale Eingabeereignisse aller Typen .
  • Wenn zwei Komponenten auf demselben Objekt bei globalen Ereignissen registriert werden, und dann wird eine in Laufzeit deaktiviert, die zweite wird beendet, wenn globale Ereignisse empfangen werden.

Neue API RegisterHandler und UnregisterHandler:

  • Stellt ein explizites und detailliertes Steuerelement bereit, über das Eingabeereignisse global abgehört werden sollten und welche auf die Grundlage von Fokus stehen sollen.
  • Ermöglicht mehreren Komponenten auf demselben Objekt, unabhängig voneinander auf globale Ereignisse zu hören.

Vorgehensweise zum Migrieren

  • Wenn Sie die API direkt zuvor aufgerufen Register/Unregister haben, ersetzen Sie diese Aufrufe durch Aufrufe.RegisterHandler/UnregisterHandler Verwenden Sie Handlerschnittstellen, die Sie als generische Parameter implementieren. Wenn Sie mehrere Schnittstellen implementieren und mehrere davon auf globale Eingabeereignisse hören, rufen Sie mehrmals auf RegisterHandler .
  • Wenn Sie von InputSystemGlobalListenergeerbt wurden, ändern Sie die Vererbung in InputSystemGlobalHandlerListener. Implementieren RegisterHandlers und UnregisterHandlers abstrakte Methoden. Im Implementierungsaufruf inputSystem.RegisterHandler (inputSystem.UnregisterHandler) zum Registrieren aller Handlerschnittstellen möchten Sie globale Ereignisse hören.
  • Wenn Sie von BaseInputHandler, implementieren RegisterHandlers und UnregisterHandlers abstrakten Methoden erben (gleich wie für InputSystemGlobalListener).

Beispiele für die Migration

// 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 IMixedRealitySpatialAwarenessSystem und IMixedRealitySpatialAwarenessObserver-Schnittstellen haben mehrere unterbrechungsbezogene Änderungen vorgenommen, wie unten beschrieben.

Änderungen

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

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent wurde umbenannt, um IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent die Verwendung zu klären.

Erweiterungen

Basierend auf Kundenfeedback wurde die Unterstützung für einfache Entfernung 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 haben sich geändert, um verschiedene Fehler zu beheben und für eine intuitivere Verwendung.

SolverHandler

  • Die Klasse erweitert nicht mehr von ControllerFinder
  • TrackedObjectToReference Öffentliche Eigenschaft veraltet und wurde umbenannt in TrackedTargetType
  • TrackedObjectType veraltete Werte des linken rechten & Controllers. Verwenden MotionController sie stattdessen oder Werte und HandJoint aktualisieren Sie neue TrackedHandedness Eigenschaft, um die Nachverfolgung auf links oder rechts zu beschränken.

InBetween

  • TrackedObjectForSecondTransform Öffentliche Eigenschaft 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 veraltet und wurde umbenannt in MaxRaycastDistance
  • CloseDistance Öffentliche Eigenschaft veraltet und wurde umbenannt in ClosestDistance
  • Standardwert ist RaycastDirectionMode jetzt TrackedTargetForward , welche Raycasts in Richtung der nachverfolgten Zieltransformation vorwärts angezeigt werden.
  • OrientationMode Aufzählungswerte Vertical und Full, wurden in TrackedTarget und SurfaceNormal entsprechend umbenannt.
  • 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 als Standard festgelegt Local . Dadurch können Schaltflächen skaliert werden, während sie weiterhin gedrückt werden können.

Clipping-Sphäre

Die ClippingSphere-Schnittstelle wurde geändert, um die APIs zu spiegeln, die im ClippingBox- und ClippingPlane gefunden wurden.

Die ClippingSphere-Eigenschaft 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

  • Bei NearInteractionTouchable werden keine Unity UI-Canvaseingaben mehr verarbeitet. Die NearInteractionTouchableUnityUI-Klasse muss jetzt für Touchables für Unity UI verwendet werden.
  • ColliderNearInteractionTouchable ist die neue Basisklasse für Touchables basierend auf Collidern, d. h. jeder Touchable außer NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront wurde verschoben und in PokePointer.TouchableDistance Umbenannt. Dies ist der Abstand und die PokePointer können mit Touchables interagieren. Zuvor hatte jeder Touchable seine eigene maximale Interaktionsabstand, aber jetzt wird dies in der PokePointer definiert, die eine bessere Optimierung ermöglicht.
  • BaseNearInteractionTouchable.DistBack wurde in PokeThreshold umbenannt. Dies macht klar, dass PokeThreshold das Gegenstück zu DebounceThreshold ist. Ein Touchzugriff wird aktiviert, wenn der PokeThreshold gekreuzt wird und beim Kreuzen von DebounceThreshold freigegeben wird.

ReadOnlyAttribute

Der Microsoft.MixedReality.Toolkit Namespace wurde zu ReadOnlyAttribute, BeginReadOnlyGroupAttributeund EndReadOnlyGroupAttribute.

PointerClickHandler

Die PointerClickHandler-Klasse ist veraltet. Stattdessen PointerHandler sollte die Funktion verwendet werden, die gleiche Funktionalität bietet.

HoloLens-Klickerunterstützung

Die Controllerzuordnungen des HoloLens-Clickers haben sich von einem unhanded zu einem unhanded geändert WindowsMixedRealityControllerWindowsMixedRealityGGVHand. Um dies zu berücksichtigen, wird ein automatisches Updater zum ersten Mal ausgeführt, wenn Sie Ihr ControllerMapping-Profil ö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 sollte die Klasse und FocusInteractableStates das InteractableOnFocus Asset verwendet werden. Um ein neues Theme Objekt für das Projektfenster zu erstellen, klicken Sie mit der rechten Maustaste auf das InteractableOnFocusProjektfenster, und wählen Sie "Erstellen>Mixed Reality Toolkit>InteragierbaresDesign" aus>.

HandInteractionPanZoom

HandInteractionPanZoom wurde in den UI-Namespace verschoben, da es keine Eingabekomponente war. HandPanEventData wurde auch in diesen Namespace verschoben und vereinfacht, um anderen UI-Ereignisdaten zu entsprechen.

Assemblynameänderungen in 2.0.0

In der 2.0.0-Version wurden alle offiziellen Mixed Reality Toolkit-Assemblynamen und ihre zugeordneten Assemblydefinitionsdateien (Asmdef) aktualisiert, um das folgende Muster anzupassen.

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 sie möglicherweise aktualisiert werden.

In den folgenden Tabellen wird beschrieben, wie die RC2.asmdef-Dateinamen der 2.0.0-Version zugeordnet sind. Alle Assemblynamen entsprechen dem Dateinamen .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 Entfernt, verwenden 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.asmdef Microsoft.MixedReality.Toolkit.Gltf.asmdef.asmdef
MixedRealityToolkit.Utilities.Gltf.Importers.asmdef Microsoft.MixedReality.Toolkit.Gltf.Importers.asmdef

MixedRealityToolkit.Provider

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.Beispiele

RC2 2.0.0
MixedRealityToolkit.Examples.asmdef Microsoft.MixedReality.Toolkit.Examples.asmdef
MixedRealityToolkit.Examples.Demos.Gltf.asmdef.asmdef Microsoft.MixedReality.Toolkit.Demos.Gltf.asmdef.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