Mise à jour à partir de versions antérieures — MRTK2
- Mise à niveau vers une nouvelle version de MRTK
- 2.3.0 à 2.4.0
- 2.2.0 à 2.3.0
- 2.1.0 à 2.2.0
- 2.0.0 à 2.1.0
- RC2 à 2.0.0
Recherche de la version actuelle
Suivez ces instructions pour déterminer la version de MRTK que vous utilisez actuellement :
- Ouvrir votre projet MRTK dans Unity
- Accédez au dossier « MixedRealityToolkit » dans votre fenêtre Projet
- 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 :
- Accédez au dossier « Mixed Reality Toolkit Foundation »
- Cliquez sur « package.json » pour afficher un aperçu dans Unity ou l’ouvrir avec un éditeur de texte
- 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,
- Enregistrez une copie de votre projet actuel, au cas où vous atteignez des escargots à tout moment dans les étapes de mise à niveau.
- Fermer Unity
- 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.
- 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.
- Rouvrir le projet dans Unity
- 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
- 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.
- 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
- 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.
- Enregistrez une copie de votre projet actuel.
- Fermer Unity
- 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.
- 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.
- 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)
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.
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.
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.
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
MouseLookToggle
a été précédemment inclus dans l’énumérationMouseLookButton
commeInputSimulationMouseButton.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.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.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.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.
Pour résoudre ce problème, ajoutez une instance IMixedRealityRaycastProvider à votre profil système d’entrée.
Système d’événements
- Les
IMixedRealityEventSystem
anciennes méthodesRegister
d’API etUnregister
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 parInputSystemGlobalListener
InputSystemGlobalHandlerListener
. Il s’agit d’un changement cassant pour tous les descendants deBaseInputHandler
.
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, appelezRegisterHandler
plusieurs fois. - Si vous héritez,
InputSystemGlobalListener
remplacez l’héritage parInputSystemGlobalHandlerListener
. Implémentez etUnregisterHandlers
abstraitezRegisterHandlers
des méthodes. Dans l’appelinputSystem.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
BaseInputHandler
méthodes abstraites , implémentezRegisterHandlers
etUnregisterHandlers
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é pourIMixedRealitySpatialAwarenessSystem.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 enTrackedTargetType
TrackedObjectType
déprécie les valeurs du contrôleur de droite gauche & . Utilisez ouHandJoint
mettez à jour uneMotionController
nouvelleTrackedHandedness
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 enSecondTrackedObjectType
AttachSecondTransformToNewTrackedObject()
a été supprimé. Pour mettre à jour le solveur, modifiez les propriétés publiques (par exempleSecondTrackedObjectType
)
SurfaceMagnetism
MaxDistance
propriété publique déconseillée et a été renommée enMaxRaycastDistance
CloseDistance
propriété publique déconseillée et a été renommée enClosestDistance
- La valeur par défaut est
RaycastDirectionMode
maintenantTrackedTargetForward
celle des raycasts dans la direction de la transformation cible suivie vers l’avant OrientationMode
les valeurs d’énumération etVertical
Full
, ont été renomméesTrackedTarget
respectivement etSurfaceNormal
KeepOrientationVertical
propriété publique a été ajoutée pour contrôler si l’orientation du GameObject associé reste verticale
Boutons
PressableButton
aDistanceSpaceMode
maintenant la propriété définieLocal
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
, BeginReadOnlyGroupAttribute
et 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 InteractableOnFocus
bouton 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 |