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 la 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 opérations suivantes :

  1. Accédez au dossier « Mixed Reality Toolkit Foundation »
  2. Cliquez sur « package.json » pour afficher un aperçu dans Unity ou ouvrez-le 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 à partir de composants dépréciés et s’adapter aux modifications cassants. L’outil de migration fait partie du package Outils .

Les instructions ci-dessous décrivent le chemin de mise à niveau 2.4.0 vers 2.5.0. Si votre projet se trouve sur la version 2.3.0 ou une version antérieure, lisez les modifications apportées 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 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 utilisait précédemment 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 MRTK Unity et à les appliquer à votre projet. Consultez les étapes ci-dessous,

  1. Enregistrez une copie de votre projet actuel, au cas où vous rencontrez des accrocs à tout moment dans les étapes de mise à niveau.
  2. Fermer Unity
  3. Dans le dossier Assets , 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, copiez d’abord 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 : commencez par importer ce package
    • Outils
    • (Facultatif) Extensions

    Notes

    Si des extensions supplémentaires ont été installées, il se peut qu’elles devront être réimportées.

    • (Facultatif) Exemples
  7. Fermez Unity et supprimez le dossier Bibliothèque (lisez d’abord la note ci-dessous !). 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. Cela supprimera l’main caméra, mais elle sera recréé à l’étape suivante. Si des propriétés de l’main caméra ont été modifiées manuellement, elles devront être appliquées manuellement une fois la nouvelle caméra créée.
    • Sélectionnez MixedRealityToolkit -> Ajouter à la scène et configurer
    • Sélectionnez MixedRealityToolkit -> Utilitaires -> Mise à jour -> Profils de mappage de contrôleur (ne doit être effectué qu’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 chacun de leur côté. 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’ensemble du projet à la recherche d’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 décrit le travail qui peut être effectué pour simplifier ce processus de migration dans une version ultérieure)

Basculer des fichiers de ressources Unity vers 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

Le passage à 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 Assets , 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, copiez d’abord 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

Changement de l’API renomme le dossier

Renommages de dossiers 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, ils doivent être mis à 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 visuel. La case « IsEyeTrackingEnabled » se trouve dans les paramètres de regard du profil de pointeur d’entrée. Cochez cette case pour activer le regard basé sur les yeux, plutôt que le regard par défaut basé sur la tête.

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

Comportement du pointeur du regard dans la version 2.4.0

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

Pour plus d’informations sur les réglages du regard et des mains, consultez l’article Yeux et 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. En outre, de nombreuses classes de contrôleur ont défini cela de la même façon (AssignControllerMappings(DefaultInteractions);), de sorte que l’appel complet a été refactorisé en BaseController et a fait un remplacement facultatif au lieu de obligatoire.

Propriétés du regard

La UseEyeTracking propriété de l’implémentation GazeProvider de IMixedRealityEyeGazeProvider a été renommée en 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 WindowsApiChecker

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

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

Il n’est pas prévu d’ajouter des propriétés à WindowsApiChecker pour les futures versions de contrat d’API.

GltfMeshPrimitiveAttributes en lecture seule

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

Migration de l’icône bouton personnalisé

Auparavant, les icônes de bouton personnalisées devaient affecter un nouveau matériau au quad renderer du bouton. Cela n’est plus nécessaire et nous vous recommandons de déplacer les textures d’icônes personnalisées dans un IconSet. Les icônes et les matériaux personnalisés existants sont conservés. Toutefois, ils seront moins optimaux jusqu’à ce qu’ils soient mis à niveau. Pour mettre à niveau les ressources de 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 fenêtre de mise à niveau

Si une icône est introuvable dans le jeu d’icônes par défaut pendant 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 privé 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é publique ControllerPoseSynchronizer.Handedness 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 activé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 basés 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 UX 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 d’application peut nécessiter une 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 qui est identique à l’enum Unity. Cette modification permet de préparer MRTK pour les FUTURES API de limite d’Unity.

MixedRealityServiceProfileAttribute

Pour mieux décrire la configuration requise pour la 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é modifiée de Type en Type[] et a été renommée requiredTypes.

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

a BaseNearInteractionTouchable été modifié pour marquer la OnValidate méthode comme étant virtuelle. Les classes qui s’étendent BaseNearInteractionTouchable (ex : 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 pour utiliser BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Ajouté

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

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

Notes

Cette modification n’est pas rétrocompatible avec la version 2.0.0.

Déprécié

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

Avec interaction

Les méthodes et propriétés suivantes ont été dépréciées et seront supprimées d’une version ultérieure 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.

Modifications de profil dans la version 2.1.0

Profil de suivi de la main

Les visualisations de maillage de main et de jointure ont désormais un éditeur et des paramètres de lecteur distincts. Le profil de suivi de la main a été mis à jour pour permettre de définir ces visualisations sur ; Nothing, Everything, Editor ou Player.

Modes de visualisation de la main

Les profils de suivi des mains personnalisés devront peut-être être mis à jour pour fonctionner correctement avec la version 2.1.0.

Notes

Cette modification n’est pas rétrocompatible 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 le type de liaison (clé ou souris) ainsi que le code de liaison réel (code clé ou numéro de bouton de la souris respectivement). Le struct a son propre inspecteur, qui permet un 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 volumineuse.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle était précédemment inclus dans l’énumération MouseLookButton en tant que InputSimulationMouseButton.Focused, il s’agit désormais d’une option distincte. Lorsque cette option est activée, la caméra continue à 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é retirées, la rotation de la main est maintenant contrôlée par la souris ainsi. Maintenez HandRotateButton (Ctrl) avec la touche de manipulation de la main gauche/droite (LShift/Espace) pour permettre 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 la verticale et utilise par défaut les touches Q/E ainsi que les boutons de déclenchement du contrôleur.

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

Profil du fournisseur de données souris

Le profil du fournisseur de données souris a été mis à jour pour exposer les nouvelles CursorSpeed propriétés et WheelSpeed . Les profils personnalisés existants auront 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 -> Utilitaires -> Mise à jour -> Profils de mappage de contrôleur lors de la mise à niveau. Cela met à jour tous les profils de mappage de contrôleur personnalisés avec les axes et les 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 des 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, dont certaines 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, castez le service instance en IMixedRealityDataProviderAccess et utilisez GetDataProvider<T>.

Utilisez MixedRealityServiceRegistry ou CoreServices à la place pour les propriétés dépréciées suivantes

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

CoreServices

La CoreServices classe remplace les 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 version ultérieure 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 votre code d’application n’aura pas besoin d’être mis à 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 ces problèmes, ajoutez un 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. Ils sont conservés à des fins de 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’une modification cassant pour tous les descendants de BaseInputHandler.

Motivation derrière le changement

L’ancienne API Register de système d’événements et Unregister peut potentiellement causer plusieurs problèmes dans l’exécution, main étant :

  • Si un composant s’inscrit pour des événements globaux, il reçoit des événements d’entrée globaux de tous 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 types.
  • Si deux composants sur le même objet s’inscrivent à des événements globaux, puis que l’un d’eux est désactivé dans l’exécution, le second cesse de recevoir des événements globaux.

Nouvelle API RegisterHandler et UnregisterHandler:

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

Guide pratique pour migrer

  • Si vous appelez Register/Unregister l’API directement auparavant, 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 globale, appelez RegisterHandler plusieurs fois.
  • Si vous avez hérité de InputSystemGlobalListener, remplacez héritage par InputSystemGlobalHandlerListener. Implémentez RegisterHandlers et UnregisterHandlers des méthodes abstraites. Dans l’appel inputSystem.RegisterHandler d’implémentation (inputSystem.UnregisterHandler) pour vous inscrire sur toutes les interfaces de gestionnaire pour lesquelles vous souhaitez écouter les événements globaux.
  • Si vous avez hérité de BaseInputHandler, implémentez RegisterHandlers et UnregisterHandlers des méthodes abstraites (identiques à pour 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 modifications cassants, comme décrit ci-dessous.

Modifications

La ou les méthodes suivantes ont été renommées pour mieux décrire leur utilisation.

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

Ajouts

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

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

Solveurs

Certains composants du solveur et la classe du gestionnaire SolverHandler ont été modifiés pour corriger divers 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 de contrôleur gauche & droite. Au lieu de cela, utilisez ou HandJoint des MotionController valeurs et mettez à jour la nouvelle TrackedHandedness propriété pour limiter le suivi à gauche ou à droite du contrôleur

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 (c’est-à-dire 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 pour RaycastDirectionMode est maintenant TrackedTargetForward laquelle raycasts dans la direction de la transformation cible suivie vers l’avant
  • OrientationModeles valeurs d’énumération et VerticalFull, ont été renommées respectivement en et SurfaceNormalTrackedTarget
  • KeepOrientationVertical une 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 sur Local comme 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 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 doivent spécifier le rayon de la ClippingSphere dans l’inspecteur. Si vous souhaitez modifier le rayon, il vous suffit de mettre à jour l’échelle de transformation de la transformation comme vous le feriez normalement.

NearInteractionTouchable et PokePointer

  • NearInteractionTouchable ne gère plus le toucher de 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 éléments tactiles basés sur les collisionneurs, c’est-à-dire tous les touchables à l’exception de NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront a été déplacé et renommé en PokePointer.TouchableDistance Il s’agit de la distance et de laquelle le PokePointer peut interagir avec les touchables. Auparavant, chaque touchable avait sa propre distance d’interaction maximale, mais celle-ci est maintenant définie dans le PokePointer qui permet une meilleure optimisation.
  • BaseNearInteractionTouchable.DistBack a été renommé PokeThreshold Ceci indique clairement que PokeThreshold est le équivalent de DebounceThreshold. Un touchable 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. Le 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 sont passés d’un non pris en WindowsMixedRealityController charge à un non géré WindowsMixedRealityGGVHand. Pour tenir compte de cela, une mise à jour automatique s’exécute la première fois que vous ouvrez votre profil ControllerMapping. Ouvrez 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 InteractableOnFocus classe et la FocusInteractableStates ressource doivent être utilisées à la place. Pour créer une Theme ressource pour le , cliquez avec le InteractableOnFocusbouton droit dans la fenêtre du projet, puis sélectionnez Créer>Mixed Reality Kit d’outils>thème interactif>.

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énements d’interface utilisateur.

Modification du nom de l’assembly dans la version 2.0.0

Dans la version 2.0.0, tous les noms d’assembly Mixed Reality Toolkit officiels et les fichiers de définition d’assembly (.asmdef) associés 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 une mise à jour.

Les tableaux suivants décrivent comment les noms de fichier .asmdef RC2 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.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.UX.Interactables.asmdef Microsoft.MixedReality.Toolkit.Demos.UX.Interactables.asmdef