Table of Contents

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:

  1. Cierra Unity.
  2. Elimina el directorio de compilación de la plataforma generado cuando Unity construye la aplicación.
  3. Vuelve a abrir el proyecto de Unity y elimina la versión antigua de EasyAR Sense Unity Plugin del proyecto.
  4. 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:

  1. 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.
  2. 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

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:

  1. Elimina en la scene el grupo de nodes generado antes por Mega Studio, incluido el objeto MegaBlocks y 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.
  2. 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.
  3. Si la scene original tenía annotation nodes, tendrás que crear manualmente nodes similares para reemplazarlos.
  4. 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.
  5. Elimina el script inválido del node hijo Mega Tracker (MegaTrackerFrameFilter) bajo AR 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:

Temas relacionados