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 la 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 opérations suivantes :
- Accédez au dossier « Mixed Reality Toolkit Foundation »
- Cliquez sur « package.json » pour afficher un aperçu dans Unity ou ouvrez-le 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 à 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,
- Enregistrez une copie de votre projet actuel, au cas où vous rencontrez des accrocs à tout moment dans les étapes de mise à niveau.
- Fermer Unity
- 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.
- 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.
- Rouvrir le projet dans Unity
- 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
- 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.
- 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
- 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.
- Enregistrez une copie de votre projet actuel.
- Fermer Unity
- 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.
- 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.
- 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. IsMethodAvailable
Utilisez , 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)
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.
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.
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.
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
MouseLookToggle
était précédemment inclus dans l’énumérationMouseLookButton
en tant queInputSimulationMouseButton.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.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é 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.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.
Pour résoudre ces problèmes, ajoutez un 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. 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 parInputSystemGlobalListener
InputSystemGlobalHandlerListener
. Il s’agit d’une modification cassant pour tous les descendants deBaseInputHandler
.
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, appelezRegisterHandler
plusieurs fois. - Si vous avez hérité de
InputSystemGlobalListener
, remplacez héritage parInputSystemGlobalHandlerListener
. ImplémentezRegisterHandlers
etUnregisterHandlers
des méthodes abstraites. Dans l’appelinputSystem.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émentezRegisterHandlers
etUnregisterHandlers
des méthodes abstraites (identiques à pourInputSystemGlobalListener
).
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é enIMixedRealitySpatialAwarenessSystem.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 enTrackedTargetType
TrackedObjectType
déprécie les valeurs de contrôleur gauche & droite. Au lieu de cela, utilisez ouHandJoint
desMotionController
valeurs et mettez à jour la nouvelleTrackedHandedness
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 enSecondTrackedObjectType
AttachSecondTransformToNewTrackedObject()
a été supprimé. Pour mettre à jour le solveur, modifiez les propriétés publiques (c’est-à-direSecondTrackedObjectType
)
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 pour
RaycastDirectionMode
est maintenantTrackedTargetForward
laquelle raycasts dans la direction de la transformation cible suivie vers l’avant OrientationMode
les valeurs d’énumération etVertical
Full
, ont été renommées respectivement en etSurfaceNormal
TrackedTarget
KeepOrientationVertical
une 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éfinie surLocal
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
, BeginReadOnlyGroupAttribute
et 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 InteractableOnFocus
bouton 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 |