Aktualisieren von früheren Versionen – MRTK2
- Upgrade auf eine neue Version von MRTK
- 2.3.0 bis 2.4.0
- 2.2.0 bis 2.3.0
- 2.1.0 bis 2.2.0
- 2.0.0 bis 2.1.0
- RC2 bis 2.0.0
Suchen nach der aktuellen Version
Folgen Sie den folgenden Anweisungen, um herauszufinden, welche Version von MRTK Sie derzeit verwenden:
- Öffnen Ihres MRTK-Projekts in Unity
- Navigieren Sie im Projektfenster zum Ordner "MixedRealityToolkit"
- Ö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:
- Navigieren Sie zum Ordner "Mixed Reality Toolkit Foundation"
- Klicken Sie auf "package.json", um eine Vorschau in Unity anzuzeigen oder mit einem Text-Editor zu öffnen.
- 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,
- Speichern Sie eine Kopie Ihres aktuellen Projekts, wenn Sie an einem beliebigen Punkt in den Upgradeschritten auf alle Snags klicken.
- Unity schließen
- 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.
- 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.
- Öffnen Sie das Projekt in Unity erneut.
- 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
- 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.
- 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.
- 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.
- Speichern Sie eine Kopie Ihres aktuellen Projekts.
- Unity schließen
- 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.
- 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.
- Ö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 IsMethodAvailable
Sie , 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)
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.
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. ) NearInteractionTouchableUnityUI
wurden aktualisiert, um diese Änderung widerzuspiegeln.
ColliderNearInteractionTouchable
Die ColliderNearInteractionTouchable
-Klasse ist veraltet. Bitte aktualisieren Sie Codeverweise auf die Verwendung BaseNearInteractionTouchable
.
IMixedRealityMouseDeviceManager
Hinzugefügt
IMixedRealityMouseDeviceManager
wurde 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.
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.
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
MouseLookToggle
war zuvor in derMouseLookButton
Aufzählung enthalten, daInputSimulationMouseButton.Focused
es 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.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.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.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.
Um dies zu beheben, fügen Sie ihrer Eingabesystemprofil eine IMixedRealityRaycastProvider-Instanz hinzu.
Ereignissystem
- Die
IMixedRealityEventSystem
alten API-MethodenRegister
undUnregister
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 zuInputSystemGlobalListener
InputSystemGlobalHandlerListener
" geändert. Dies ist eine unterbrechungsende Änderung für alle Nachkommen vonBaseInputHandler
.
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 aufRegisterHandler
. - Wenn Sie von
InputSystemGlobalListener
geerbt wurden, ändern Sie die Vererbung inInputSystemGlobalHandlerListener
. ImplementierenRegisterHandlers
undUnregisterHandlers
abstrakte Methoden. Im ImplementierungsaufrufinputSystem.RegisterHandler
(inputSystem.UnregisterHandler
) zum Registrieren aller Handlerschnittstellen möchten Sie globale Ereignisse hören. - Wenn Sie von
BaseInputHandler
, implementierenRegisterHandlers
undUnregisterHandlers
abstrakten Methoden erben (gleich wie fürInputSystemGlobalListener
).
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, umIMixedRealitySpatialAwarenessSystem.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 inTrackedTargetType
TrackedObjectType
veraltete Werte des linken rechten & Controllers. VerwendenMotionController
sie stattdessen oder Werte undHandJoint
aktualisieren Sie neueTrackedHandedness
Eigenschaft, um die Nachverfolgung auf links oder rechts zu beschränken.
InBetween
TrackedObjectForSecondTransform
Öffentliche Eigenschaft veraltet und wurde umbenannt inSecondTrackedObjectType
AttachSecondTransformToNewTrackedObject()
wurde entfernt. Um den Solver zu aktualisieren, ändern Sie die öffentlichen Eigenschaften (d. hSecondTrackedObjectType
. )
SurfaceMagnetism
MaxDistance
Öffentliche Eigenschaft veraltet und wurde umbenannt inMaxRaycastDistance
CloseDistance
Öffentliche Eigenschaft veraltet und wurde umbenannt inClosestDistance
- Standardwert ist
RaycastDirectionMode
jetztTrackedTargetForward
, welche Raycasts in Richtung der nachverfolgten Zieltransformation vorwärts angezeigt werden. OrientationMode
AufzählungswerteVertical
undFull
, wurden inTrackedTarget
undSurfaceNormal
entsprechend umbenannt.KeepOrientationVertical
Öffentliche Eigenschaft wurde hinzugefügt, um zu steuern, ob die Ausrichtung des zugeordneten GameObject vertikal bleibt.
Schaltflächen
PressableButton
Jetzt istDistanceSpaceMode
die Eigenschaft als Standard festgelegtLocal
. 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
, BeginReadOnlyGroupAttribute
und 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 WindowsMixedRealityController
WindowsMixedRealityGGVHand
. 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 InteractableOnFocus
Projektfenster, 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 |