Guide de migration de EasyAR Sense Unity Plugin
Cet article explique comment migrer des anciennes versions de EasyAR Sense Unity Plugin vers les nouvelles versions.
Explication de compatibilité
À partir de la version 4000, EasyAR Sense Unity Plugin suit le contrôle de version des paquets exigé par Unity (Semantic Versioning), donc la compatibilité peut être évaluée à partir du numéro de version.
La version 4.7 est une version de mise à jour progressive ; deux versions 4.7 quelconques sont incompatibles.
Avant la 4.7, seul le troisième numéro de version indique la compatibilité ascendante. Les changements des deux premiers numéros de version indiquent une incompatibilité. Par exemple, 4.6.2 est compatible avec 4.6.1, mais 4.6.0 n’est pas compatible avec 4.5.0.
Avertissement
Modifier le fichier tgz ou mettre à jour seulement une partie du plugin après l’extraction entraînera une incompatibilité.
Guide général de migration
Pour migrer vers une nouvelle version, commencez par supprimer l’ancien paquet plugin via la Package Manager window, puis ajoutez le nouveau paquet.
Il est recommandé de suivre les étapes suivantes :
- Fermez Unity.
- Supprimez le répertoire de build de plateforme généré par Unity lors de la compilation de l’application.
- Rouvrez le project Unity et retirez l’ancienne version de EasyAR Sense Unity Plugin du project.
- Importez la nouvelle version de EasyAR Sense Unity Plugin.

Note
Les fichiers d’exemple fournis par le plugin ne garantissent pas la compatibilité entre versions. Après la mise à jour du plugin, les exemples importés dans le project peuvent ne plus fonctionner correctement. Il est recommandé de supprimer les anciens exemples avant de continuer.
EasyAR inclut des fichiers de library native. Si ces fichiers ont déjà été utilisés avant d’être supprimés ou remplacés, le système les verrouillera et ils ne pourront plus être supprimés ou remplacés.
Important
Avant de supprimer l’ancienne version, assurez-vous qu’aucune scene n’est en cours d’exécution dans l’editor et qu’aucune application de platform n’est en cours de build. Il est généralement recommandé de fermer Unity avant de supprimer ou de remplacer le package, puis de le remplacer juste après sa réouverture.
Avant de rebuild avec la nouvelle version du plugin, supprimez d’abord les répertoires de build de plateforme générés par Unity, y compris le répertoire Gradle pour Android et le répertoire Xcode pour iOS.
Astuce
Ces répertoires se trouvent généralement dans le dossier Library du project Unity, par exemple Library/Bee/Android/Prj/IL2CPP/Gradle, mais cela peut varier selon la version de Unity.
Si vous avez déjà compilé mais ne trouvez pas le répertoire de plateforme correspondant, il est recommandé de supprimer l’ensemble du dossier Library.
Si l’exception SchemaHashNotMatched apparaît après la migration, il y a généralement deux possibilités :
- Les étapes précédentes n’ont pas été effectuées correctement, ce qui a entraîné un échec ou une migration incomplète, ou bien le répertoire de build généré par Unity n’a pas été correctement mis à jour. Si vous ne le supprimez pas manuellement, il y a de fortes chances que cela échoue. Il est recommandé de suivre les étapes conseillées ou de rebuild avec un project sans cache
Library. - Le fichier tgz EasyAR a été modifié manuellement ou le plugin entier n’a pas été entièrement mis à jour après extraction. Dans ce cas, EasyAR ne peut pas garantir son bon fonctionnement ; vous devez donc retélécharger le bon paquet et l’importer.
Important
Comme les fichiers de library EasyAR Sense et leur emplacement après le build peuvent changer, si vous conservez le project Gradle ou Xcode généré par Unity, vous devez d’abord supprimer tous les fichiers liés à EasyAR, tels que EasyAR.aar, libEasyAR.so, easyar.framework, etc.
Migration vers la version 4003
Astuce
Seul l’usage de Mega introduit des changements incompatibles ; l’utilisation des autres fonctions n’est pas affectée.
Lors de la migration de 4002 vers 4003, en plus du guide général ci-dessus, vous devez aussi tenir compte des points suivants.
Changement du workflow de développement Mega
Dans la version 4003, le workflow de développement Mega a beaucoup changé. Si vous aviez déjà utilisé d’autres fonctions de EasyAR Sense Unity Plugin, ce workflow vous sera plus familier.
Les principaux changements sont :
- Changements des fonctions du paquet
com.easyar.mega- Pour utiliser Mega, ce paquet n’est plus obligatoire ; mais pour charger les block model dans l’editor afin d’aider au placement du contenu, il reste nécessaire de l’importer.
- Une option de configuration Mega Block/Landmark support a été ajoutée : activez-la avant le build.
- Changements des fonctions de l’editor
- Le chargement de block mesh et d’autres données ne nécessite plus l’outil Mega Studio, et même si un tool d’annotation est ajouté à la scene, il ne peut pas être utilisé pour le Unity development.
- Le panneau du composant MegaBlockController fournit directement les fonctions d’editor pour block, ce qui rend la gestion plus directe.
- session verification tool fournit davantage d’options utiles de contrôle Mega, remplaçant les anciennes fonctions de Mega Studio et la zone de test editor de MegaTrackerFrameFilter.
- Changements du comportement du target
- EasyAR.Mega.Scene.BlockController a été remplacé par MegaBlockController. MegaBlockController est une sous-classe de TargetController, et suit le target behavior mode standard ainsi que la active control strategy applicable aux targets.
- EasyAR.Mega.Scene.BlockRootController a été supprimé ; les blocks n’ont plus de root node et chaque block est indépendant.
- MegaBlockController peut être créé via ARSessionFactory.CreateController.
Lors de la migration de 4002 vers 4003, l’élément le plus important consiste à réorganiser les block objects dans la scene et à remplacer le groupe de nodes généré auparavant par Mega Studio par le composant MegaBlockController :
- Supprimez dans la scene le groupe de nodes généré auparavant par Mega Studio, y compris l’objet
MegaBlockset tous les block objects en dessous.- S’il existe des annotation nodes, ils doivent aussi être supprimés.
- Si les block objects ont des content objects sous eux, il est recommandé de déplacer d’abord ces content objects vers d’autres nodes, en conservant le local transform inchangé.
- Ajoutez un target tracking Mega dans la scene.
- Si la scene d’origine contient plusieurs block objects, vous devrez créer plusieurs target tracking Mega.
- Déplacez les content objects qui se trouvaient auparavant sous les block objects vers les nouveaux target tracking Mega, en conservant le local transform inchangé.
- Faites attention au réglage de l’id dans MegaBlockController.Source ; cet id doit correspondre à l’id du block object d’origine pour que le runtime puisse le charger correctement.
- Faites attention au réglage de MegaBlockController.Tracker afin d’utiliser le bon MegaTrackerFrameFilter.
- Si la scene d’origine contenait des annotation nodes, vous devez créer manuellement des nodes similaires pour les remplacer.
- Si le project d’origine contenait une logique de création de block dans le script, utilisez à la place la méthode de Ajout d’un target tracking Mega.
- Supprimez le script devenu invalide sur le node enfant
Mega Tracker(MegaTrackerFrameFilter) sousAR Session (EasyAR).
Dans la plupart des cas, après le remplacement des block nodes, le reste du content de la scene n’a pas besoin d’être modifié et peut fonctionner normalement.
Modifications API
| Module fonctionnel | v4002 API | v4003 API | Description |
|---|---|---|---|
| Mega | MegaTrackerFrameFilter.BlockHolder | MegaBlockController.Tracker | Ajout d’un target tracking Mega Sur le block node, le loader est configuré à la place du block root autrefois configuré sur le tracker node. |
| Mega | MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) | MegaTrackerFrameFilter.SwitchEndPoint | Contrôler le processus de tracking Mega |
| Mega | MegaTrackerFrameFilter.SimulatorLocation | MegaTrackerFrameFilter.SimulatorLocation | |
| Mega | CloudLocalizerFrameFilter.BlockHolder | MegaBlockController.Tracker | Ajout d’un target tracking Mega Sur le block node, le loader est configuré à la place du block root autrefois configuré sur le tracker node. |
| Mega | CloudLocalizerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) | CloudLocalizerFrameFilter.SwitchEndPoint | Contrôler le processus de tracking Mega |
| Mega | CloudLocalizerFrameFilter.SimulatorLocation | CloudLocalizerFrameFilter.SimulatorLocation | |
| Mega | MegaLocalizationResponse.Blocks | MegaLocalizationResponse.Blocks | Contrôler le processus de tracking Mega |
| Mega Support | EasyAR.Mega.Scene.BlockHolder | - | Fonction supprimée |
| Mega Support | EasyAR.Mega.Scene.BlockHolder.MultiBlock | - | Fonction supprimée |
| Mega Support | EasyAR.Mega.Scene.BlockHolder.BlockRoot | MegaBlockController.Tracker | Ajout d’un target tracking Mega Sur le block node, le loader est configuré à la place du block root autrefois configuré sur le tracker node. |
| Mega Support | EasyAR.Mega.Scene.BlockHolder.BlockRootSourceType | - | Fonction supprimée |
| Mega Support | EasyAR.Mega.Scene.BlockHolder.MultiBlockStrategy | - | Fonction supprimée |
| Mega Support | EasyAR.Mega.Scene.BlockActiveController | ActiveController | Stratégie active control applicable aux targets |
| Mega Support | EasyAR.Mega.Scene.BlockController | MegaBlockController | Ajout d’un target tracking Mega |
| Mega Support | EasyAR.Mega.Scene.BlockRootController | - | Fonction supprimée |
| Mega Support | EasyAR.Mega.Scene.LocalTransform | LocalTransform | |
| Mega Support | EasyAR.Mega.Scene.Location | Location | |
| Mega Support | EasyAR.Mega.Scene.LocationConverter | - | Fonction supprimée |
| Mega Support | EasyAR.Mega.Scene.AnnotationNode | - | Fonction supprimée |
| Mega Support | EasyAR.Mega.Scene.AnnotationGroup | - | Fonction supprimée |
| Mega Support | EasyAR.Mega.Scene.NavPointGraph | - | Fonction supprimée |
Migration vers la version 4002
Lors de la migration de la version 4001 vers 4002, en plus du guide général ci-dessus, vous devez aussi tenir compte des points suivants.
Modifications API
| Module fonctionnel | v4001 API | v4002 API | Description |
|---|---|---|---|
| Fonction auxiliaire | Image.Image(Buffer, PixelFormat, int, int) | Image.create |
Migration vers la version 4001
Astuce
Seul l’usage de Mega introduit des changements incompatibles ; l’utilisation des autres fonctions n’est pas affectée.
Lors de la migration de la version 4000 vers 4001, en plus du guide général ci-dessus, vous devez aussi tenir compte des points suivants.
Modifications API
| Module fonctionnel | v4000 API | v4001 API | Description |
|---|---|---|---|
| Mega | MegaTrackerFrameFilter.ResultPoseType.EnableLocalization | MegaTrackerFrameFilter.EnableLocalization | Contrôler le processus de tracking Mega |
| Mega | MegaTrackerFrameFilter.ResultPoseType.EnableStabilization | - | Fonction supprimée |
Migration des versions historiques
Lors de la migration depuis des versions antérieures à 4000, consultez :