Guía de migración de EasyAR Sense Unity Plugin
Este artículo explica cómo migrar de versiones antiguas de EasyAR Sense Unity Plugin a versiones nuevas.
Explicación de compatibilidad
A partir de la versión 4000, EasyAR Sense Unity Plugin sigue el control de versiones de paquetes exigido por Unity (Semantic Versioning), por lo que la compatibilidad se puede juzgar por el número de versión.
La versión 4.7 es una versión de actualización gradual; cualquier par de versiones 4.7 son incompatibles.
Antes de 4.7, solo el tercer número de versión indica compatibilidad hacia atrás. Los cambios en los dos primeros números indican incompatibilidad. Por ejemplo, 4.6.2 es compatible con 4.6.1, pero 4.6.0 no es compatible con 4.5.0.
Advertencia
Modificar el archivo tgz o actualizar parcialmente el plugin después de descomprimirlo provocará incompatibilidad.
Guía general de migración
Para migrar a una versión nueva, primero elimina el paquete del plugin antiguo mediante la Package Manager window y añade el paquete nuevo.
Se recomienda seguir estos pasos:
- Cierra Unity.
- Elimina el directorio de compilación de la plataforma generado cuando Unity construye la aplicación.
- Vuelve a abrir el proyecto de Unity y elimina la versión antigua de EasyAR Sense Unity Plugin del proyecto.
- Importa la nueva versión de EasyAR Sense Unity Plugin.

Nota
Los archivos de ejemplo incluidos con el plugin no garantizan compatibilidad entre versiones. Tras actualizar el plugin, los ejemplos importados en el proyecto pueden dejar de funcionar. Se recomienda eliminar los ejemplos antiguos antes de continuar.
EasyAR incluye archivos de biblioteca nativa. Si esos archivos ya se han usado antes de eliminarlos o reemplazarlos, el sistema los bloqueará y no podrán borrarse ni sustituirse.
Importante
Antes de eliminar la versión antigua, asegúrate de que no haya ninguna scene en ejecución en el editor ni ninguna aplicación de plataforma en proceso de compilación. Normalmente se recomienda cerrar Unity antes de eliminar o reemplazar el paquete, y sustituirlo justo después de volver a abrirlo.
Antes de volver a compilar con el plugin de la nueva versión, elimina primero los directorios de compilación de plataforma generados por Unity, incluido el directorio Gradle de Android y el directorio Xcode de iOS.
Consejo
Normalmente estos directorios están en la carpeta Library del proyecto de Unity, por ejemplo Library/Bee/Android/Prj/IL2CPP/Gradle, aunque puede variar según la versión de Unity.
Si ya compilaste pero no encuentras el directorio de la plataforma correspondiente, se recomienda eliminar toda la carpeta Library.
Si después de la migración aparece la excepción SchemaHashNotMatched, normalmente hay dos posibilidades:
- Los pasos anteriores no se realizaron correctamente, por lo que la actualización falló o quedó incompleta, o bien el directorio de compilación generado por Unity no se actualizó correctamente. Si no se elimina manualmente, es muy probable que falle. Se recomienda seguir los pasos sugeridos o volver a compilar usando un proyecto sin cache
Library. - El archivo tgz de EasyAR se modificó manualmente o el plugin completo no se actualizó correctamente después de descomprimirlo. En ese caso, EasyAR no puede garantizar su uso correcto, por lo que debes volver a descargar el paquete correcto e importarlo.
Importante
Como los archivos de biblioteca de EasyAR Sense y la ubicación de esos archivos tras la compilación pueden cambiar, si conservas el proyecto Gradle o Xcode generado por Unity, debes eliminar antes todos los archivos relacionados con EasyAR, como EasyAR.aar, libEasyAR.so, easyar.framework, etc.
Migrar a la versión 4003
Consejo
Solo hay cambios incompatibles al usar Mega; el uso de otras funciones no se ve afectado.
Al migrar de la versión 4002 a la 4003, además de la guía general de migración anterior, también debes tener en cuenta lo siguiente.
Cambios en el flujo de desarrollo de Mega
En la versión 4003, el flujo de desarrollo de Mega cambió bastante. Si antes ya usabas otras funciones de EasyAR Sense Unity Plugin, este flujo te resultará más familiar.
Los principales cambios incluyen:
- Cambios en las funciones del paquete
com.easyar.mega- Para usar Mega, este paquete ya no es obligatorio; pero para cargar modelos block en el editor y ayudar a colocar contenido, sigue siendo necesario importarlo.
- Se añadió la opción de configuración Mega Block/Landmark support: actívala antes de compilar.
- Cambios en funciones del editor
- La carga de block mesh y otros datos ya no requiere la tool Mega Studio, e incluso si se añade una tool de anotación a la scene, no puede usarse para desarrollo de Unity.
- El panel del componente MegaBlockController ofrece directamente las funciones de editor para block, con una gestión más directa.
- session verification tool ofrece más opciones útiles de control de Mega, reemplazando las funciones anteriores de Mega Studio y el área de prueba del editor de MegaTrackerFrameFilter.
- Cambios en el comportamiento del target
- EasyAR.Mega.Scene.BlockController ha sido reemplazado por MegaBlockController. MegaBlockController es una subclase de TargetController y sigue el modo de comportamiento target estándar y la estrategia de control active aplicable a targets.
- EasyAR.Mega.Scene.BlockRootController se eliminó; los block ya no tienen root node y cada block es independiente.
- MegaBlockController puede crearse mediante ARSessionFactory.CreateController.
Al migrar de 4002 a 4003, lo más importante es reorganizar los objetos block en la scene y reemplazar el grupo de nodes generado antes por Mega Studio con el componente MegaBlockController:
- Elimina en la scene el grupo de nodes generado antes por Mega Studio, incluido el objeto
MegaBlocksy todos los objetos block bajo él.- Si existen annotation nodes, también deben eliminarse.
- Si los objetos block tienen objetos de contenido debajo, se recomienda mover primero esos objetos de contenido a otros nodes y mantener local transform sin cambios.
- Añade el target tracking de Mega en la scene.
- Si en la scene original había varios objetos block, deberás crear varios objetos target tracking de Mega.
- Mueve los objetos de contenido que estaban bajo los objetos block originales a los nuevos objetos target tracking de Mega y mantén local transform sin cambios.
- Presta atención a la configuración del id en MegaBlockController.Source; ese id debe coincidir con el id del objeto block original para que el runtime lo cargue correctamente.
- Presta atención a la configuración de MegaBlockController.Tracker para usar el MegaTrackerFrameFilter correcto.
- Si la scene original tenía annotation nodes, tendrás que crear manualmente nodes similares para reemplazarlos.
- Si el project original tenía lógica para crear block en el script, usa en su lugar el método de Añadir el target tracking de Mega.
- Elimina el script inválido del node hijo
Mega Tracker(MegaTrackerFrameFilter) bajoAR Session (EasyAR).
En la mayoría de los casos, después de reemplazar los block nodes, el resto del contenido de la scene no necesita cambios y puede funcionar normalmente.
Cambios de API
| Módulo | API v4002 | API v4003 | Explicación |
|---|---|---|---|
| Mega | MegaTrackerFrameFilter.BlockHolder | MegaBlockController.Tracker | Añadir el target tracking de Mega En el block node, el loader se configura en lugar del block root que antes se configuraba en el tracker node. |
| Mega | MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) | MegaTrackerFrameFilter.SwitchEndPoint | Controlar el proceso de tracking de Mega |
| Mega | MegaTrackerFrameFilter.SimulatorLocation | MegaTrackerFrameFilter.SimulatorLocation | |
| Mega | CloudLocalizerFrameFilter.BlockHolder | MegaBlockController.Tracker | Añadir el target tracking de Mega En el block node, el loader se configura en lugar del block root que antes se configuraba en el tracker node. |
| Mega | CloudLocalizerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) | CloudLocalizerFrameFilter.SwitchEndPoint | Controlar el proceso de tracking de Mega |
| Mega | CloudLocalizerFrameFilter.SimulatorLocation | CloudLocalizerFrameFilter.SimulatorLocation | |
| Mega | MegaLocalizationResponse.Blocks | MegaLocalizationResponse.Blocks | Controlar el proceso de tracking de Mega |
| Mega Support | EasyAR.Mega.Scene.BlockHolder | - | Función eliminada |
| Mega Support | EasyAR.Mega.Scene.BlockHolder.MultiBlock | - | Función eliminada |
| Mega Support | EasyAR.Mega.Scene.BlockHolder.BlockRoot | MegaBlockController.Tracker | Añadir el target tracking de Mega En el block node, el loader se configura en lugar del block root que antes se configuraba en el tracker node. |
| Mega Support | EasyAR.Mega.Scene.BlockHolder.BlockRootSourceType | - | Función eliminada |
| Mega Support | EasyAR.Mega.Scene.BlockHolder.MultiBlockStrategy | - | Función eliminada |
| Mega Support | EasyAR.Mega.Scene.BlockActiveController | ActiveController | Estrategia de control active aplicable a targets |
| Mega Support | EasyAR.Mega.Scene.BlockController | MegaBlockController | Añadir el target tracking de Mega |
| Mega Support | EasyAR.Mega.Scene.BlockRootController | - | Función eliminada |
| Mega Support | EasyAR.Mega.Scene.LocalTransform | LocalTransform | |
| Mega Support | EasyAR.Mega.Scene.Location | Location | |
| Mega Support | EasyAR.Mega.Scene.LocationConverter | - | Función eliminada |
| Mega Support | EasyAR.Mega.Scene.AnnotationNode | - | Función eliminada |
| Mega Support | EasyAR.Mega.Scene.AnnotationGroup | - | Función eliminada |
| Mega Support | EasyAR.Mega.Scene.NavPointGraph | - | Función eliminada |
Migrar a la versión 4002
Al migrar de la versión 4001 a la 4002, además de la guía general de migración anterior, también debes tener en cuenta lo siguiente.
Cambios de API
| Módulo | API v4001 | API v4002 | Explicación |
|---|---|---|---|
| Función auxiliar | Image.Image(Buffer, PixelFormat, int, int) | Image.create |
Migrar a la versión 4001
Consejo
Solo hay cambios incompatibles al usar Mega; el uso de otras funciones no se ve afectado.
Al migrar de la versión 4000 a la 4001, además de la guía general de migración anterior, también debes tener en cuenta lo siguiente.
Cambios de API
| Módulo | API v4000 | API v4001 | Explicación |
|---|---|---|---|
| Mega | MegaTrackerFrameFilter.ResultPoseType.EnableLocalization | MegaTrackerFrameFilter.EnableLocalization | Controlar el proceso de tracking de Mega |
| Mega | MegaTrackerFrameFilter.ResultPoseType.EnableStabilization | - | Función eliminada |
Migración histórica
Al migrar desde versiones anteriores a 4000, consulta: