Mise à jour à partir de versions antérieures — MRTK2

Recherche de la version actuelle

Suivez ces instructions pour déterminer la version de MRTK que vous utilisez actuellement :

  1. Ouvrir votre projet MRTK dans Unity
  2. Accédez au dossier « MixedRealityToolkit » dans votre fenêtre Projet
  3. Ouvrez le fichier appelé « Version »

Si le fichier et le dossier ci-dessus n’existent pas, vous utilisez une version plus récente de MRTK. Dans ce cas, essayez les éléments suivants :

  1. Accédez au dossier « Mixed Reality Toolkit Foundation »
  2. Cliquez sur « package.json » pour afficher un aperçu dans Unity ou l’ouvrir avec un éditeur de texte
  3. Recherchez la ligne avec le mot « version : »

Mise à niveau vers une nouvelle version de MRTK

Il est fortement recommandé d’exécuter l’outil de migration après avoir obtenu la mise à jour MRTK pour corriger et mettre à niveau automatiquement des composants dépréciés et s’ajuster aux changements cassants. L’outil de migration fait partie du package Outils .

Les instructions ci-dessous décrivent le chemin de mise à niveau 2.4.0 à 2.5.0. Si votre projet se trouve sur la version 2.3.0 ou antérieure, lisez les modifications entre les versions pour comprendre le chemin de mise à niveau, ou lisez les instructions de la version précédente pour effectuer une mise à niveau de version par version.

Mixed Reality Feature Tool

Le moyen le plus simple de mettre à niveau MRTK vers une version plus récente de MRTK consiste à utiliser l’outil de fonctionnalité Mixed Reality pour télécharger les derniers packages et les charger directement dans votre projet Unity.

Si le projet a déjà utilisé des fichiers de ressources Unity (.unitypackage), consultez ces instructions.

Fichiers de ressources Unity (.unitypackage)

Un autre chemin de mise à niveau consiste à télécharger manuellement les packages Unity MRTK et à les appliquer à votre projet. Consultez les étapes ci-dessous,

  1. Enregistrez une copie de votre projet actuel, au cas où vous atteignez des escargots à tout moment dans les étapes de mise à niveau.
  2. Fermer Unity
  3. Dans le dossier Ressources , supprimez les dossiers MRTK suivants, ainsi que leurs fichiers .meta (le projet n’a peut-être pas tous les dossiers répertoriés)
    • MRTK/Core
    • MRTK/Exemples
    • MRTK/Extensions
    • MRTK/Fournisseurs
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Important

    Si des modifications ont été apportées aux nuanceurs MRTK, créez une sauvegarde locale avant de supprimer le dossier MRTK/StandardAssets

    • MRTK/Tools

    Important

    Ne supprimez PAS le dossier MixedRealityToolkit.Generated ou son fichier .meta.

  4. Supprimer le dossier Bibliothèque

    Important

    Certains outils Unity, comme Unity Collab, enregistrent les informations de configuration dans le dossier Bibliothèque. Si vous utilisez un outil qui effectue cette opération, commencez par copier le dossier de données de l’outil à partir de la bibliothèque avant de le supprimer, puis restaurez-le une fois la bibliothèque régénérée.

  5. Rouvrir le projet dans Unity
  6. Importer les nouveaux packages Unity
    • Foundation - Importer ce package en premier
    • Outils
    • (Facultatif) Extensions

    Notes

    Si des extensions supplémentaires ont été installées, elles doivent peut-être être réimportées.

    • (Facultatif) Exemples
  7. Fermez Unity et supprimez le dossier Bibliothèque (lisez la note ci-dessous en premier!). Cette étape est nécessaire pour forcer Unity à actualiser sa base de données de ressources et à rapprocher les profils personnalisés existants.
  8. Lancez Unity et, pour chaque scène du projet
    • Supprimez MixedRealityToolkit et MixedRealityPlayspace, le cas échéant, de la hiérarchie. Cette opération supprime la caméra principale, mais elle sera recréée à l’étape suivante. Si des propriétés de la caméra principale ont été modifiées manuellement, celles-ci doivent être réinitulées manuellement une fois la nouvelle caméra créée.
    • Sélectionner MixedRealityToolkit -> Ajouter à la scène et configurer
    • Sélectionnez MixedRealityToolkit - Utilitaires ->> Mise à jour -> Profils de mappage du contrôleur (vous devez effectuer une seule fois) - Cela met à jour tous les profils de mappage de contrôleur personnalisés avec des axes et des données mis à jour, tout en laissant vos actions d’entrée affectées personnalisées intactes
  9. Exécutez l’outil de migration et exécutez l’outil sur le projet complet pour vous assurer que tout votre code est mis à jour vers la dernière version. La fenêtre de migration contient un certain nombre de gestionnaires de migration différents, qui doivent être exécutés par eux-mêmes. Cette étape implique :
    • Sélectionnez le premier gestionnaire de migration dans la liste déroulante Sélection du gestionnaire de migration .
    • Cliquez sur le bouton « Projet complet ».
    • Cliquez sur le bouton « Ajouter un projet complet pour la migration » (cela permet d’analyser l’intégralité du projet pour les objets à migrer).
    • Cliquez sur le bouton « Migrer » qui doit être activé si des objets pouvant être migrés ont été trouvés.
    • Répétez les trois étapes précédentes pour chacun des gestionnaires de migration dans la liste déroulante. (Consultez ce problème qui couvre le travail qui peut être effectué pour simplifier ce processus de migration dans une version ultérieure)

Passage des fichiers de ressources Unity à Mixed Reality Feature Tool

Le passage des fichiers de ressources Unity à Mixed Reality packages Feature Tool offre un certain nombre d’avantages :

  • Mise à jour plus facile
  • Temps de compilation plus rapides
  • Moins de projets dans la solution Visual Studio

La modification à l’utilisation de l’outil de fonctionnalité Mixed Reality nécessite un ensemble unique d’étapes manuelles.

  1. Enregistrez une copie de votre projet actuel.
  2. Fermer Unity
  3. Dans le dossier Ressources , supprimez les dossiers MRTK suivants, ainsi que leurs fichiers .meta (le projet n’a peut-être pas tous les dossiers répertoriés)
    • MRTK/Core
    • MRTK/Exemples
    • MRTK/Extensions
    • MRTK/Fournisseurs
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Important

    Si des modifications ont été apportées aux nuanceurs MRTK, créez une sauvegarde locale avant de supprimer le dossier MRTK/StandardAssets

    • MRTK/Tools

    Important

    Ne supprimez PAS le dossier MixedRealityToolkit.Generated ou son fichier .meta.

  4. Supprimer le dossier Bibliothèque

    Important

    Certains outils Unity, comme Unity Collab, enregistrent les informations de configuration dans le dossier Bibliothèque. Si vous utilisez un outil qui effectue cette opération, commencez par copier le dossier de données de l’outil à partir de la bibliothèque avant de le supprimer, puis restaurez-le une fois la bibliothèque régénérée.

  5. Rouvrir le projet dans Unity

Une fois les étapes précédentes effectuées, exécutez l’outil de fonctionnalité Mixed Reality et importez la version souhaitée de Mixed Reality Toolkit.

Mise à jour de la version 2.3.0 vers la version 2.4.0

Le dossier renomme lesmodifications de l’API

Renomme le dossier dans la version 2.4.0

Les dossiers MixedRealityToolkit ont été renommés et déplacés dans une hiérarchie commune dans la version 2.4. Si une application utilise des chemins codés en dur vers des ressources MRTK, elle doit être mise à jour conformément au tableau suivant.

Dossier précédent Nouveau dossier
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/Exemples
MixedRealityToolkit.Extensions MRTK/Extensions
MixedRealityToolkit.Providers MRTK/Fournisseurs
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Services
MixedRealityToolkit.Tests MRTK/Tests
MixedRealityToolkit.Tools MRTK/Tools

Important

Contient les fichiers générés par le MixedRealityToolkit.Generated client et reste inchangé.

Configuration du regard dans la version 2.4.0

Cette version de MRTK modifie les étapes requises pour la configuration du regard. La case à cocher « IsEyeTrackingEnabled » se trouve dans les paramètres de regard du profil de pointeur d’entrée. La case à cocher active le regard, plutôt que le regard par défaut basé sur la tête.

Pour plus d’informations sur ces modifications et obtenir des instructions complètes sur la configuration du suivi oculaire, consultez l’article sur le suivi oculaire .

Comportement du pointeur de regard dans la version 2.4.0

Le comportement du pointeur par défaut du regard a été modifié pour correspondre au comportement du pointeur par défaut du regard de la tête. Un pointeur de regard oculaire est automatiquement supprimé une fois qu’une main est détectée. Le pointeur de regard des yeux redevient visible après avoir dit « Sélectionner ».

Vous trouverez des détails sur les réglages de regard et de main dans l’article sur les yeux et les mains .

Modifications de l’API dans la version 2.4.0

Classes de contrôleur personnalisées

Auparavant, les classes de contrôleur personnalisées devaient définir SetupDefaultInteractions(Handedness). Cette méthode a été rendue obsolète dans la version 2.4, car le paramètre de remise était redondant avec la propre main de la classe de contrôleur. La nouvelle méthode n’a aucun paramètre. De plus, de nombreuses classes de contrôleur ont défini cette même façon (AssignControllerMappings(DefaultInteractions);), de sorte que l’appel complet a été refactorisé BaseController et a effectué une substitution facultative au lieu de obligatoire.

Propriétés du regard

La UseEyeTracking propriété de l’implémentation GazeProvider a IMixedRealityEyeGazeProvider été renommée IsEyeTrackingEnabled.

Si vous l’avez fait précédemment...

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

Faites-le maintenant...

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

Propriétés de WindowsApiChecker

Les propriétés WindowsApiChecker suivantes ont été marquées comme obsolètes. Veuillez utiliser IsMethodAvailable, IsPropertyAvailable ou IsTypeAvailable.

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

Il n’existe aucun plan d’ajout de propriétés à WindowsApiChecker pour les futures versions de contrat d’API.

GltfMeshPrimitiveAttributes en lecture seule

Les attributs primitifs de maillage gltf utilisés pour être définissables, ils sont désormais en lecture seule. Leurs valeurs sont définies une fois lors de la désérialisation.

Migration d’icône de bouton personnalisé

Les icônes de bouton personnalisées précédemment requises pour affecter un nouveau matériau au convertisseur quad du bouton. Cela n’est plus nécessaire et nous vous recommandons de déplacer des textures d’icône personnalisées dans un IconSet. Les matériaux et les icônes personnalisés existants sont conservés. Toutefois, elles seront moins optimales jusqu’à ce qu’elles soient mises à niveau. Pour mettre à niveau les ressources sur tous les boutons du projet vers le nouveau format recommandé, utilisez buttonConfigHelperMigrationHandler. (Mixed Reality Toolkit - Utilitaires ->> Fenêtre migration -> Sélection du gestionnaire de migration -> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Dialogue De mise à niveau de la fenêtre

Si une icône est introuvable dans le jeu d’icônes par défaut lors de la migration, un jeu d’icônes personnalisé est créé dans MixedRealityToolkit.Generated/CustomIconSets. Une boîte de dialogue indique que cela a eu lieu.

Notification d’icône personnalisée

Mise à jour de la version 2.2.0 vers la version 2.3.0

Modifications de l’API dans la version 2.3.0

ControllerPoseSynchronizer

Le champ private ControllerPoseSynchronizer.handedness a été marqué comme obsolète. Cela doit avoir un impact minimal sur les applications, car le champ n’est pas visible en dehors de sa classe.

Le setter de la propriété ControllerPoseSynchronizer.Handedness public a été supprimé (#7012).

MSBuild pour Unity

Cette version de MRTK utilise une version plus récente de MSBuild pour Unity que les versions précédentes. Pendant le chargement du projet, si l’ancienne version est répertoriée dans le manifeste du Gestionnaire de package Unity, la boîte de dialogue de configuration s’affiche, avec l’option Activer MSBuild pour Unity cochée. L’application effectue une mise à niveau.

ScriptingUtilities

La classe ScriptingUtilities a été marquée comme obsolète et a été remplacée par ScriptUtilities, dans l’assembly Microsoft.MixedReality.Toolkit.Editor.Utilities. La nouvelle classe affine le comportement précédent et ajoute la prise en charge de la suppression des définitions de script.

Bien que le code existant continue de fonctionner dans la version 2.3.0, il est recommandé de mettre à jour vers la nouvelle classe.

ShellHandRayPointer

Les membres lineRendererSelected et lineRendererNoTarget de la classe ShellHandRayPointer ont été remplacés par lineMaterialSelected et lineMaterialNoTarget, respectivement (#6863).

Remplacez lineRendererSelected par lineMaterialSelected et/ou lineRendererNoTarget par lineMaterialNoTarget pour résoudre les erreurs de compilation.

Observateur spatial StartupBehavior

Les observateurs spatiaux construits sur la BaseSpatialObserver classe respectent désormais la valeur de StartupBehavior lorsqu’ils sont réactivés (#6919).

Aucune modification n’est nécessaire pour tirer parti de ce correctif.

Préfabriqués de contrôle d’expérience utilisateur mis à jour pour utiliser PressableButton

Les préfabriqués suivants utilisent désormais le composant PressableButton au lieu de TouchHandler pour une interaction proche (7070)

  • AnimationButton
  • Bouton
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • Bouton bascule
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

Le code de l’application peut nécessiter la mise à jour en raison de cette modification.

Espace de noms WindowsMixedRealityUtilities

L’espace de noms de WindowsMixedRealityUtilities est passé de Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input à Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863).

Mettez à jour #using instructions pour résoudre les erreurs de compilation.

Mise à jour de la version 2.1.0 vers la version 2.2.0

Modifications de l’API dans la version 2.2.0

IMixedRealityBoundarySystem.Contains

Cette méthode prenait auparavant une énumération expérimentale spécifique définie par Unity. Il prend maintenant une énumération définie par MRTK identique à l’énumération Unity. Cette modification permet de préparer MRTK pour les API de limites futures d’Unity.

MixedRealityServiceProfileAttribute

Pour mieux décrire les exigences de prise en charge d’un profil, MixedRealityServiceProfileAttribute a été mis à jour pour ajouter une collection facultative de types exclus. Dans le cadre de cette modification, la propriété ServiceType a été remplacée de Type à Type[] et a été renommée ObligatoireTypes.

Une deuxième propriété, ExcludedTypes a également été ajoutée.

Mise à jour de la version 2.0.0 vers la version 2.1.0

Modifications de l’API dans la version 2.1.0

BaseNearInteractionTouchable

La BaseNearInteractionTouchable méthode a été modifiée pour marquer la OnValidate méthode comme virtuelle. Les classes qui s’étendent BaseNearInteractionTouchable (par exemple NearInteractionTouchableUnityUI) ont été mises à jour pour refléter cette modification.

ColliderNearInteractionTouchable

La classe ColliderNearInteractionTouchable a été déconseillée. Mettez à jour les références de code à utiliser BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Ajouté

IMixedRealityMouseDeviceManager a été ajouté CursorSpeed et WheelSpeed les propriétés. Ces propriétés permettent aux applications de spécifier une valeur multiplicateur selon laquelle la vitesse du curseur et de la roue, respectivement, sera mise à l’échelle.

Il s’agit d’un changement cassant et nécessite la modification des implémentations existantes du gestionnaire de périphériques de la souris.

Notes

Cette modification n’est pas compatible avec la version 2.0.0.

Déconseillée

La MouseInputProfile propriété a été marquée comme obsolète et sera supprimée d’une future version de Microsoft Mixed Reality Toolkit. Il est recommandé que le code de l’application n’utilise plus cette propriété.

Avec interaction

Les méthodes et propriétés suivantes ont été déconseillées et seront supprimées d’une future version de Microsoft Mixed Reality Toolkit. Il est recommandé de mettre à jour le code d’application conformément aux instructions contenues dans l’attribut Obsolète et affichées dans la console.

  • 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

La NearInteractionTouchableSurface classe a été ajoutée et sert désormais de classe de base pour NearInteractionTouchable et NearInteractionTouchableUnityUI.

Changements de profil dans la version 2.1.0

Profil de suivi des mains

Les visualisations de maillage de main et de jointure ont désormais des paramètres d’éditeur et de lecteur distincts. Le profil de suivi des mains a été mis à jour pour permettre la définition de ces visualisations ; Rien, Tout, Éditeur ou Lecteur.

Modes de visualisation manuelle

Vous devrez peut-être mettre à jour les profils de suivi des mains personnalisés pour fonctionner correctement avec la version 2.1.0.

Notes

Cette modification n’est pas compatible avec la version 2.0.0.

Profil de simulation d’entrée

Le système de simulation d’entrée a été mis à niveau, ce qui modifie quelques paramètres dans le profil de simulation d’entrée. Certaines modifications ne peuvent pas être migrées automatiquement et les utilisateurs peuvent constater que les profils utilisent des valeurs par défaut.

  1. Toutes les liaisons keyCode et bouton de souris dans le profil ont été remplacées par un struct générique KeyBinding , qui stocke respectivement le type de liaison (touche ou souris) ainsi que le code de liaison réel (keyCode ou numéro de bouton de la souris). Le struct a son propre inspecteur, qui permet à l’affichage unifié et offre un outil de « liaison automatique » pour définir rapidement des liaisons de touches en appuyant sur la touche respective au lieu de sélectionner dans une liste déroulante énorme.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle a été précédemment inclus dans l’énumération MouseLookButton comme InputSimulationMouseButton.Focused, il s’agit maintenant d’une option distincte. Lorsque cette option est activée, l’appareil photo continue de pivoter avec la souris après avoir relâché le bouton, jusqu’à ce que la touche d’échappement soit enfoncée.

  3. HandDepthMultiplier La valeur par défaut a été réduite de 0.1 à 0.03 pour prendre en charge certaines modifications apportées à la simulation d’entrée. Si l’appareil photo se déplace trop rapidement lors du défilement, essayez de réduire cette valeur.

  4. Les touches de rotation des mains ont été supprimées, la rotation des mains est désormais contrôlée par la souris. La combinaison HandRotateButton (Ctrl) avec la touche de manipulation de gauche/droite (LShift/Space) permet la rotation de la main.

  5. Un nouvel axe « UpDown » a été introduit dans la liste des axes d’entrée. Cela contrôle le mouvement de la caméra dans les touches verticale et par défaut en touches Q/E, ainsi que les boutons de déclencheur du contrôleur.

Pour plus d’informations sur ces modifications, consultez l’article du service de simulation d’entrée .

Profil du fournisseur de données de souris

Le profil du fournisseur de données de la souris a été mis à jour pour exposer les nouvelles CursorSpeed propriétés.WheelSpeed Les profils personnalisés existants ont automatiquement des valeurs par défaut fournies. Lorsque le profil est enregistré, ces nouvelles valeurs sont conservées.

Profil de mappage de contrôleur

Certains axes et types d’entrée ont été mis à jour dans la version 2.1.0, en particulier autour de la plateforme OpenVR. Veillez à sélectionner MixedRealityToolkit - Utilities ->> Update -> Controller Mapping Profiles lors de la mise à niveau. Cela met à jour tous les profils de mappage de contrôleur personnalisés avec les axes et données mis à jour, tout en laissant vos actions d’entrée affectées personnalisées intactes.

Mise à jour de RC2 vers la version 2.0.0

Entre les versions RC2 et 2.0.0 de Microsoft Mixed Reality Toolkit, des modifications ont été apportées qui peuvent avoir un impact sur les projets existants. Ce document décrit ces modifications et comment mettre à jour les projets vers la version 2.0.0.

Modifications de l’API dans la version 2.0.0

Depuis la publication de RC2, un certain nombre de modifications d’API ont été apportées, notamment certains qui peuvent interrompre les projets existants. Les sections suivantes décrivent les modifications qui se sont produites entre les versions RC2 et 2.0.0.

MixedRealityToolkit

Les propriétés publiques suivantes sur l’objet MixedRealityToolkit ont été déconseillées.

  • RegisteredMixedRealityServices ne contient plus la collection de services d’extensions inscrits et de fournisseurs de données.

Pour accéder aux services d’extension, utilisez MixedRealityServiceRegistry.TryGetService<T>. Pour accéder aux fournisseurs de données, effectuez un cast de l’instance de service vers IMixedRealityDataProviderAccess et utilisez GetDataProvider<T>.

Utiliser MixedRealityServiceRegistry ou CoreServices à la place pour les propriétés déconseillées suivantes

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

CoreServices

La CoreServices classe est le remplacement des accesseurs système statiques (par exemple, BoundarySystem) trouvés dans l’objet MixedRealityToolkit .

Important

Les MixedRealityToolkit accesseurs système ont été dépréciés dans la version 2.0.0 et seront supprimés dans une prochaine version de MRTK.

L’exemple de code suivant illustre l’ancien et le nouveau modèle.

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

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

L’utilisation de la nouvelle classe CoreSystem garantit que le code de votre application n’aura pas besoin de se mettre à jour si vous modifiez l’application pour utiliser un autre bureau d’enregistrement de services (par exemple, l’un des gestionnaires de services expérimentaux).

IMixedRealityRaycastProvider

Avec l’ajout de IMixedRealityRaycastProvider, le profil de configuration du système d’entrée a été modifié. Si vous avez un profil personnalisé, vous pouvez recevoir les erreurs dans l’image suivante lorsque vous exécutez votre application.

Sélection du fournisseur Raycast 1

Pour résoudre ce problème, ajoutez une instance IMixedRealityRaycastProvider à votre profil système d’entrée.

Sélection du fournisseur Raycast 2

Système d’événements

  • Les IMixedRealityEventSystem anciennes méthodes Register d’API et Unregister ont été marquées comme obsolètes. Elles sont conservées pour assurer la compatibilité descendante.
  • InputSystemGlobalListener a été marqué comme obsolète. Ses fonctionnalités n’ont pas changé.
  • BaseInputHandler la classe de base a été remplacée par InputSystemGlobalListenerInputSystemGlobalHandlerListener. Il s’agit d’un changement cassant pour tous les descendants de BaseInputHandler.

Motivation derrière le changement

L’ancienne API Register du système d’événements et Unregister peut potentiellement provoquer plusieurs problèmes lors de l’exécution, principal étant :

  • Si un composant s’inscrit pour les événements globaux, il reçoit des événements d’entrée globaux de tous les types.
  • Si l’un des composants d’un objet s’inscrit pour les événements d’entrée globaux, tous les composants de cet objet recevront des événements d’entrée globaux de tous les types.
  • Si deux composants du même objet s’inscrivent aux événements globaux, puis qu’un composant est désactivé au moment de l’exécution, le deuxième cesse de recevoir des événements globaux.

Nouvelle API RegisterHandler et UnregisterHandler:

  • Fournit un contrôle explicite et précis sur les événements d’entrée qui doivent être écoutés globalement et qui doivent être basés sur le focus.
  • Permet à plusieurs composants sur le même objet d’écouter les événements globaux indépendamment les uns des autres.

Migration

  • Si vous appelez Register/Unregister directement l’API, remplacez ces appels par des appels à .RegisterHandler/UnregisterHandler Utilisez des interfaces de gestionnaire que vous implémentez en tant que paramètres génériques. Si vous implémentez plusieurs interfaces et que plusieurs d’entre elles écoutent les événements d’entrée globaux, appelez RegisterHandler plusieurs fois.
  • Si vous héritez, InputSystemGlobalListenerremplacez l’héritage par InputSystemGlobalHandlerListener. Implémentez et UnregisterHandlers abstraitez RegisterHandlers des méthodes. Dans l’appel inputSystem.RegisterHandler d’implémentation (inputSystem.UnregisterHandler) pour vous inscrire sur toutes les interfaces de gestionnaire dont vous souhaitez écouter les événements globaux.
  • Si vous héritez des BaseInputHandlerméthodes abstraites , implémentez RegisterHandlers et UnregisterHandlers abstraites (identiques à InputSystemGlobalListener).

Exemples de 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);
        }
    }
}

Reconnaissance spatiale

Les interfaces IMixedRealitySpatialAwarenessSystem et IMixedRealitySpatialAwarenessObserver ont apporté plusieurs changements cassants, comme décrit ci-dessous.

Changements

Les méthodes suivantes ont été renommées pour mieux décrire leur utilisation.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent a été renommé pour IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent clarifier son utilisation.

Ajouts

En fonction des commentaires des clients, la prise en charge de la suppression facile des données de sensibilisation spatiale précédemment observées a été ajoutée.

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

Solveurs

Certains composants du solveur et la classe du gestionnaire solveur ont changé pour corriger différents bogues et pour une utilisation plus intuitive.

SolverHandler

  • La classe ne s’étend plus à partir de ControllerFinder
  • TrackedObjectToReference propriété publique déconseillée et a été renommée en TrackedTargetType
  • TrackedObjectType déprécie les valeurs du contrôleur de droite gauche & . Utilisez ou HandJoint mettez à jour une MotionController nouvelle TrackedHandedness propriété pour limiter le suivi au contrôleur gauche ou droit

InBetween

  • TrackedObjectForSecondTransform propriété publique déconseillée et a été renommée en SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() a été supprimé. Pour mettre à jour le solveur, modifiez les propriétés publiques (par exemple SecondTrackedObjectType)

SurfaceMagnetism

  • MaxDistance propriété publique déconseillée et a été renommée en MaxRaycastDistance
  • CloseDistance propriété publique déconseillée et a été renommée en ClosestDistance
  • La valeur par défaut est RaycastDirectionMode maintenant TrackedTargetForward celle des raycasts dans la direction de la transformation cible suivie vers l’avant
  • OrientationModeles valeurs d’énumération et VerticalFull, ont été renommées TrackedTarget respectivement et SurfaceNormal
  • KeepOrientationVertical propriété publique a été ajoutée pour contrôler si l’orientation du GameObject associé reste verticale

Boutons

  • PressableButton a DistanceSpaceMode maintenant la propriété définie Local sur la valeur par défaut. Cela permet aux boutons d’être mis à l’échelle tout en étant toujours pressables

Sphère de découpage

L’interface ClippingSphere a changé pour mettre en miroir les API trouvées dans ClippingBox et ClippingPlane.

La propriété Radius de ClippingSphere est désormais calculée implicitement en fonction de l’échelle de transformation. Avant que les développeurs aient à spécifier le rayon de ClippingSphere dans l’inspecteur. Si vous souhaitez modifier le rayon, mettez simplement à jour l’échelle de transformation de la transformation comme vous le feriez normalement.

NearInteractionTouchable et PokePointer

  • NearInteractionTouchable ne gère plus le canevas de l’interface utilisateur Unity. La classe NearInteractionTouchableUnityUI doit maintenant être utilisée pour les éléments tactiles de l’interface utilisateur Unity.
  • ColliderNearInteractionTouchable est la nouvelle classe de base pour les touchables basées sur des colliders, c’est-à-dire toutes les interactions tactiles à l’exception de NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront a été déplacé et renommé PokePointer.TouchableDistance Il s’agit de la distance et de laquelle le PokePointer peut interagir avec les touches tactiles. Auparavant, chaque contactable avait sa propre distance d’interaction maximale, mais maintenant il est défini dans le PokePointer qui permet une meilleure optimisation.
  • BaseNearInteractionTouchable.DistBack a été renommé PokeThreshold This indique clairement que PokeThreshold est l’équivalent de DebounceThreshold. Un contactable est activé lorsque le PokeThreshold est croisé et libéré lorsque DebounceThreshold est croisé.

ReadOnlyAttribute

L’espace Microsoft.MixedReality.Toolkit de noms a été ajouté à ReadOnlyAttribute, BeginReadOnlyGroupAttributeet EndReadOnlyGroupAttribute.

PointerClickHandler

La classe PointerClickHandler a été déconseillée. Il PointerHandler doit être utilisé à la place, il fournit les mêmes fonctionnalités.

Prise en charge du clicker HoloLens

Les mappages de contrôleurs du clicker HoloLens ont changé d’être non gérés WindowsMixedRealityController en étant non gérés WindowsMixedRealityGGVHand. Pour ce faire, un updater automatique s’exécute la première fois que vous ouvrez votre profil ControllerMapping. Ouvrez tous les profils personnalisés au moins une fois après la mise à niveau vers la version 2.0.0 afin de déclencher cette étape de migration ponctuelle.

InteractableHighlight

La classe InteractableHighlight a été déconseillée. La classe et FocusInteractableStates la InteractableOnFocus ressource doivent être utilisées à la place. Pour créer une ressource Theme pour le projet, cliquez avec le InteractableOnFocusbouton droit dans la fenêtre du projet, puis sélectionnez Créer>Mixed Reality Toolkit>Interactable>Theme.

HandInteractionPanZoom

HandInteractionPanZoom a été déplacé vers l’espace de noms de l’interface utilisateur, car il ne s’agissait pas d’un composant d’entrée. HandPanEventData a également été déplacé dans cet espace de noms et simplifié pour correspondre à d’autres données d’événement d’interface utilisateur.

Modifications apportées au nom de l’assembly dans la version 2.0.0

Dans la version 2.0.0, tous les noms officiels d’assembly Mixed Reality Toolkit et leurs fichiers de définition d’assembly associés (.asmdef) ont été mis à jour pour s’adapter au modèle suivant.

Microsoft.MixedReality.Toolkit[.<name>]

Dans certains cas, plusieurs assemblys ont été fusionnés pour créer une meilleure unité de leur contenu. Si votre projet utilise des fichiers .asmdef personnalisés, ils peuvent nécessiter la mise à jour.

Les tableaux suivants décrivent comment les noms de fichiers RC2 .asmdef sont mappés à la version 2.0.0. Tous les noms d’assembly correspondent au nom de fichier .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 Supprimé, utilisez 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