Actualización desde versiones anteriores: MRTK2

Búsqueda de la versión actual

Siga estas instrucciones para averiguar qué versión de MRTK usa actualmente:

  1. Apertura del proyecto de MRTK en Unity
  2. Vaya a la carpeta "MixedRealityToolkit" en la ventana Proyecto.
  3. Abra el archivo denominado "Version"

Si el archivo y la carpeta anteriores no existen, está en una versión más reciente de MRTK. En ese caso, pruebe lo siguiente:

  1. Vaya a la carpeta "Mixed Reality Toolkit Foundation"
  2. Haga clic en "package.json" para ver una vista previa en Unity o abrirla con un editor de texto.
  3. Busque la línea con la palabra "version:"

Actualización a una nueva versión de MRTK

Se recomienda encarecidamente ejecutar la herramienta de migración después de obtener la actualización de MRTK para corregir y actualizar automáticamente desde componentes en desuso y ajustarlos a cambios importantes. La herramienta de migración forma parte del paquete Herramientas .

Las instrucciones siguientes describen la ruta de actualización 2.4.0 a 2.5.0. Si el proyecto está en la versión 2.3.0 o anterior, lea los cambios entre versiones para comprender la ruta de actualización o lea las instrucciones de la versión anterior para realizar una actualización de versión por versión.

Herramienta de características de Mixed Reality

La manera más fácil de actualizar MRTK a una versión más reciente de MRTK es mediante la herramienta de características de Mixed Reality para descargar los paquetes más recientes y cargarlos directamente en el proyecto de Unity.

Si el proyecto usó anteriormente archivos de recursos de Unity (.unitypackage), consulte estas instrucciones.

Archivos de recursos de Unity (.unitypackage)

Otra ruta de actualización consiste en descargar manualmente paquetes de Unity de MRTK y aplicarlos al proyecto. Consulte los pasos siguientes:

  1. Guarde una copia del proyecto actual, en caso de que se alcancen los snags en cualquier momento de los pasos de actualización.
  2. Cerrar Unity
  3. Dentro de la carpeta Assets , elimine las siguientes carpetas mrTK , junto con sus archivos .meta (es posible que el proyecto no tenga todas las carpetas enumeradas).
    • MRTK/Core
    • MRTK/Ejemplos
    • MRTK/Extensions
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Importante

    Si se realizaron modificaciones en los sombreadores de MRTK, cree una copia de seguridad local antes de eliminar la carpeta MRTK/StandardAssets.

    • MRTK/Tools

    Importante

    NO elimine la carpeta MixedRealityToolkit.Generated o su archivo .meta.

  4. Eliminar la carpeta Biblioteca

    Importante

    Algunas herramientas de Unity, como Unity Collab, guardan la información de configuración en la carpeta Biblioteca. Si usa una herramienta que lo hace, copie primero la carpeta de datos de la herramienta de biblioteca antes de eliminarla, restáurela después de que se vuelva a generar la biblioteca.

  5. Volver a abrir el proyecto en Unity
  6. Importación de los nuevos paquetes de Unity
    • Foundation: importe primero este paquete
    • Herramientas
    • (Opcional) Extensiones

    Nota

    Si se han instalado extensiones adicionales, es posible que deban volver a importarse.

    • (Opcional) Ejemplos
  7. Cierre Unity y elimine la carpeta Biblioteca (lea la nota siguiente primero). Este paso es necesario para forzar a Unity a actualizar su base de datos de recursos y conciliar los perfiles personalizados existentes.
  8. Inicie Unity y para cada escena del proyecto.
    • Elimine MixedRealityToolkit y MixedRealityPlayspace, si está presente, de la jerarquía. Esto eliminará la cámara principal, pero se volverá a crear en el paso siguiente. Si alguna de las propiedades de la cámara principal se ha cambiado manualmente, tendrá que volver a aplicarse manualmente una vez creada la nueva cámara.
    • Seleccione MixedRealityToolkit -> Agregar a escena y configurar.
    • Seleccione MixedRealityToolkit - Utilities -> Update ->> Controller Mapping Profiles (solo es necesario realizar una vez): esto actualizará los perfiles de asignación de controladores personalizados con ejes y datos actualizados, a la vez que deja intactas las acciones de entrada asignadas personalizadamente.
  9. Ejecute la herramienta de migración y ejecute la herramienta en el proyecto completo para asegurarse de que todo el código se actualiza a la versión más reciente. La ventana de migración contiene varios controladores de migración diferentes, que deben ejecutarse por sí mismos. Este paso implica:
    • Seleccione el primer controlador de migración en la lista desplegable Selección del controlador de migración.
    • Haga clic en el botón "Proyecto completo".
    • Haga clic en el botón "Agregar proyecto completo para la migración" (esto examinará todo el proyecto para que se migren los objetos).
    • Haga clic en el botón "Migrar" que se debe habilitar si se encontraron objetos migrables.
    • Repita los tres pasos anteriores para cada uno de los controladores de migración dentro de la lista desplegable. (Consulte este problema que cubre el trabajo que se puede realizar para simplificar este proceso de migración en una versión futura).

Cambio de archivos de recursos de Unity a Mixed Reality Feature Tool

Cambiar de archivos de recursos de Unity a paquetes de herramientas de características de Mixed Reality aporta una serie de ventajas:

  • Actualización más sencilla
  • Tiempos de compilación más rápidos
  • Menos proyectos en la solución de Visual Studio

Cambiar al uso de la herramienta de características de Mixed Reality requiere un conjunto único de pasos manuales.

  1. Guarde una copia del proyecto actual.
  2. Cerrar Unity
  3. Dentro de la carpeta Assets , elimine las siguientes carpetas mrTK , junto con sus archivos .meta (es posible que el proyecto no tenga todas las carpetas enumeradas).
    • MRTK/Core
    • MRTK/Ejemplos
    • MRTK/Extensions
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Importante

    Si se realizaron modificaciones en los sombreadores de MRTK, cree una copia de seguridad local antes de eliminar la carpeta MRTK/StandardAssets.

    • MRTK/Tools

    Importante

    NO elimine la carpeta MixedRealityToolkit.Generated o su archivo .meta.

  4. Eliminar la carpeta Biblioteca

    Importante

    Algunas herramientas de Unity, como Unity Collab, guardan la información de configuración en la carpeta Biblioteca. Si usa una herramienta que lo hace, copie primero la carpeta de datos de la herramienta de biblioteca antes de eliminarla, restáurela después de que se vuelva a generar la biblioteca.

  5. Volver a abrir el proyecto en Unity

Una vez realizados los pasos anteriores, ejecute Mixed Reality Feature Tool e importe la versión deseada de Mixed Reality Toolkit.

Actualización de 2.3.0 a 2.4.0

Cambia el nombre de la carpeta a loscambios de la API

Cambia el nombre de la carpeta en la versión 2.4.0

Se ha cambiado el nombre de las carpetas MixedRealityToolkit y se han movido a una jerarquía común en la versión 2.4. Si una aplicación usa rutas de acceso codificadas de forma rígida a los recursos de MRTK, deberá actualizarse según la tabla siguiente.

Carpeta anterior Nueva carpeta
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/Ejemplos
MixedRealityToolkit.Extensions MRTK/Extensions
MixedRealityToolkit.Providers MRTK/Providers
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Services
MixedRealityToolkit.Tests MRTK/Pruebas
MixedRealityToolkit.Tools MRTK/Tools

Importante

MixedRealityToolkit.Generated contiene los archivos generados por el cliente y permanece sin cambios.

Configuración de la mirada ocular en la versión 2.4.0

Esta versión de MRTK modifica los pasos necesarios para la configuración de la mirada ocular. La casilla "IsEyeTrackingEnabled" se puede encontrar en la configuración de mirada del perfil de puntero de entrada. Al activar esta casilla, se habilitará la mirada basada en los ojos, en lugar de la mirada basada en la cabeza predeterminada.

Para obtener más información sobre estos cambios e instrucciones completas para la configuración del seguimiento ocular, consulte el artículo seguimiento ocular .

Comportamiento del puntero de mirada ocular en la versión 2.4.0

El comportamiento predeterminado del puntero de mirada ocular se ha modificado para que coincida con el comportamiento predeterminado del puntero de mirada con la cabeza. Un puntero de mirada ocular se suprimirá automáticamente una vez que se detecte una mano. El puntero de mirada ocular volverá a ser visible después de decir "Seleccionar".

Los detalles sobre las configuraciones de mirada y mano se pueden encontrar en el artículo de ojos y manos .

Cambios de API en la versión 2.4.0

Clases de controlador personalizadas

Anteriormente, las clases de controlador personalizadas tenían que definir SetupDefaultInteractions(Handedness). Este método se ha hecho obsoleto en la versión 2.4, ya que el parámetro de entrega era redundante con la mano propia de la clase del controlador. El nuevo método no tiene parámetros. Además, muchas clases de controlador definieron esto de la misma manera (AssignControllerMappings(DefaultInteractions);), por lo que la llamada completa se ha refactorizado en BaseController y ha hecho una invalidación opcional en lugar de necesaria.

Propiedades de mirada ocular

Se ha cambiado el UseEyeTracking nombre de la propiedad de GazeProvider la implementación de IMixedRealityEyeGazeProvider a IsEyeTrackingEnabled.

Si lo hiciste anteriormente...

if (CoreServices.InputSystem.GazeProvider is GazeProvider gazeProvider)
{
    gazeProvider.UseEyeTracking = true;
}

Haz esto ahora...

if (CoreServices.InputSystem.GazeProvider is GazeProvider gazeProvider)
{
    gazeProvider.IsEyeTrackingEnabled = true;
}

Propiedades de WindowsApiChecker

Las siguientes propiedades de WindowsApiChecker se han marcado como obsoletas. IsMethodAvailableUse , IsPropertyAvailable o IsTypeAvailable.

  • UniversalApiContractV8_IsAvailable
  • UniversalApiContractV7_IsAvailable
  • UniversalApiContractV6_IsAvailable
  • UniversalApiContractV5_IsAvailable
  • UniversalApiContractV4_IsAvailable
  • UniversalApiContractV3_IsAvailable

No hay planes para agregar propiedades a WindowsApiChecker para futuras versiones de contrato de API.

GltfMeshPrimitiveAttributes de solo lectura

Los atributos primitivos de malla gltf que se usan para establecerse, ahora son de solo lectura. Sus valores se establecerán una vez cuando se deserialicen.

Migración de icono de botón personalizado

Los iconos de botón personalizados anteriormente requerían asignar un nuevo material al representador cuadrátero del botón. Esto ya no es necesario y se recomienda mover texturas de icono personalizadas a un IconSet. Se conservan los materiales e iconos personalizados existentes. Sin embargo, serán menos óptimos hasta que se actualicen. Para actualizar los recursos de todos los botones del proyecto al nuevo formato recomendado, use ButtonConfigHelperMigrationHandler. (Mixed Reality Toolkit -> Utilidades -> Ventana de migración -> Selección del controlador de migración -> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Cuadro de diálogo de ventana de actualización

Si no se encuentra un icono en el conjunto de iconos predeterminado durante la migración, se creará un conjunto de iconos personalizado en MixedRealityToolkit.Generated/CustomIconSets. Un cuadro de diálogo indicará que ha tenido lugar.

Notificación de icono personalizado

Actualización de 2.2.0 a 2.3.0

Cambios de API en la versión 2.3.0

ControllerPoseSynchronizer

El campo private ControllerPoseSynchronizer.handedness se ha marcado como obsoleto. Esto debe tener un impacto mínimo en las aplicaciones, ya que el campo no es visible fuera de su clase.

Se ha quitado el establecedor de la propiedad Public ControllerPoseSynchronizer.Handedness (#7012).

MSBuild para Unity

Esta versión de MRTK usa una versión más reciente de MSBuild para Unity que las versiones anteriores. Durante la carga del proyecto, si la versión anterior aparece en el manifiesto de Administrador de paquetes de Unity, aparecerá el cuadro de diálogo de configuración, con la opción Habilitar MSBuild para Unity activada. La aplicación realizará una actualización.

ScriptingUtilities

La clase ScriptingUtilities se ha marcado como obsoleta y se ha reemplazado por ScriptUtilities, en el ensamblado Microsoft.MixedReality.Toolkit.Editor.Utilities. La nueva clase refina el comportamiento anterior y agrega compatibilidad para quitar definiciones de scripting.

Aunque el código existente seguirá funcionando en la versión 2.3.0, se recomienda actualizar a la nueva clase.

ShellHandRayPointer

Los miembros lineRendererSelected y lineRendererNoTarget de la clase ShellHandRayPointer se han reemplazado por lineMaterialSelected y lineMaterialNoTarget, respectivamente (#6863).

Reemplace lineRendererSelected por lineMaterialSelected o lineRendererNoTarget por lineMaterialNoTarget para resolver los errores de compilación.

StartupBehavior del observador espacial

Los observadores espaciales basados en la BaseSpatialObserver clase ahora respetan el valor de StartupBehavior cuando se vuelven a habilitar (#6919).

No se requiere ningún cambio para aprovechar esta corrección.

Objetos prefabricados de control de experiencia de usuario actualizados para usar PressableButton

Los siguientes objetos prefabricados ahora usan el componente PressableButton en lugar de TouchHandler para la interacción cercana (7070)

  • AnimationButton
  • Botón
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • ToggleSwitch
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

El código de la aplicación puede requerir la actualización debido a este cambio.

Espacio de nombres WindowsMixedRealityUtilities

El espacio de nombres de WindowsMixedRealityUtilities cambió de Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input a Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863).

Actualice las instrucciones #using para resolver los errores de compilación.

Actualización de 2.1.0 a 2.2.0

Cambios de API en la versión 2.2.0

IMixedRealityBoundarySystem.Contains

Este método anteriormente tomó una enumeración experimental específica definida por Unity. Ahora toma una enumeración definida por MRTK idéntica a la enumeración de Unity. Este cambio ayuda a preparar MRTK para las API de límites futuras de Unity.

MixedRealityServiceProfileAttribute

Para describir mejor los requisitos para admitir un perfil, mixedRealityServiceProfileAttribute se ha actualizado para agregar una colección opcional de tipos excluidos. Como parte de este cambio, la propiedad ServiceType se ha cambiado de Tipo a Type[] y se ha cambiado el nombre a RequiredTypes.

También se ha agregado una segunda propiedad, ExcludedTypes.

Actualización de 2.0.0 a 2.1.0

Cambios de API en la versión 2.1.0

BaseNearInteractionTouchable

BaseNearInteractionTouchable se ha modificado para marcar el OnValidate método como virtual. Las clases que extienden BaseNearInteractionTouchable (por ejemplo: NearInteractionTouchableUnityUI) se han actualizado para reflejar este cambio.

ColliderNearInteractionTouchable

La clase ColliderNearInteractionTouchable está desusada. Actualice las referencias de código para usar BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Se agregó

IMixedRealityMouseDeviceManager se ha agregado CursorSpeed y WheelSpeed las propiedades. Estas propiedades permiten a las aplicaciones especificar un valor multiplicador por el que se escalará la velocidad del cursor y la rueda, respectivamente.

Se trata de un cambio importante y requiere que se modifiquen las implementaciones existentes del administrador de dispositivos del mouse.

Nota

Este cambio no es compatible con la versión 2.0.0.

Obsoleto

La MouseInputProfile propiedad se ha marcado como obsoleta y se quitará de una versión futura de Microsoft Mixed Reality Toolkit. Se recomienda que el código de aplicación ya no use esta propiedad.

Interactuable

Los métodos y propiedades siguientes han quedado en desuso y se quitarán de una versión futura de Microsoft Mixed Reality Toolkit. La recomendación es actualizar el código de la aplicación según las instrucciones contenidas en el atributo Obsoleto y que se muestran en la consola.

  • 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 clase se ha agregado y ahora actúa como clase base para NearInteractionTouchable y NearInteractionTouchableUnityUI.

Cambios de perfil en la versión 2.1.0

Perfil de seguimiento de manos

Las visualizaciones de la malla de mano y las articulaciones ahora tienen una configuración independiente del editor y del reproductor. El perfil de seguimiento de manos se ha actualizado para permitir establecer estas visualizaciones en; Nada, Todo, Editor o Reproductor.

Modos de visualización de manos

Es posible que los perfiles de seguimiento de manos personalizados deba actualizarse para que funcionen correctamente con la versión 2.1.0.

Nota

Este cambio no es compatible con la versión 2.0.0.

Perfil de simulación de entrada

Se ha actualizado el sistema de simulación de entrada, que cambia algunas configuraciones en el perfil de simulación de entrada. Algunos cambios no se pueden migrar automáticamente y los usuarios pueden encontrar que los perfiles usan valores predeterminados.

  1. Todos los enlaces del botón KeyCode y mouse del perfil se han reemplazado por una estructura genérica KeyBinding , que almacena el tipo de enlace (tecla o mouse), así como el código de enlace real (KeyCode o número de botón del mouse, respectivamente). El struct tiene su propio inspector, que permite la visualización unificada y ofrece una herramienta de "enlace automático" para establecer rápidamente enlaces de teclas presionando la clave respectiva en lugar de seleccionar en una lista desplegable enorme.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle anteriormente se incluía en la MouseLookButton enumeración como InputSimulationMouseButton.Focused, ahora es una opción independiente. Cuando se habilita, la cámara seguirá girando con el mouse después de soltar el botón, hasta que se presione la tecla de escape.

  3. HandDepthMultiplier el valor predeterminado se ha reducido de 0,1 a 0,03 para dar cabida a algunos cambios en la simulación de entrada. Si la cámara se mueve demasiado rápido al desplazarse, intente reducir este valor.

  4. Las teclas para girar las manos se han quitado, la rotación de manos ahora también se controla mediante el mouse. Mantener presionada HandRotateButton (Ctrl) junto con la tecla de manipulación de la mano izquierda/derecha (LShift/Espacio) habilitará la rotación de manos.

  5. Se ha introducido un nuevo eje "UpDown" en la lista de ejes de entrada. Esto controla el movimiento de la cámara en la vertical y el valor predeterminado de las teclas Q/E, así como los botones de desencadenador del controlador.

Para más información sobre estos cambios, consulte el artículo servicio de simulación de entrada .

Perfil del proveedor de datos del mouse

El perfil del proveedor de datos del mouse se ha actualizado para exponer las nuevas CursorSpeed propiedades y WheelSpeed . Los perfiles personalizados existentes tendrán automáticamente los valores predeterminados proporcionados. Cuando se guarda el perfil, estos nuevos valores se conservarán.

Perfil de asignación de controladores

Algunos ejes y tipos de entrada se han actualizado en la versión 2.1.0, especialmente en torno a la plataforma OpenVR. Asegúrese de seleccionar MixedRealityToolkit - Utilities ->> Update -> Controller Mapping Profiles al actualizar. Esto actualizará los perfiles de asignación de controladores personalizados con los ejes y los datos actualizados, mientras deja intactas las acciones de entrada asignadas a medida.

Actualización de RC2 a 2.0.0

Entre las versiones RC2 y 2.0.0 de Microsoft Mixed Reality Toolkit, se realizaron cambios que pueden afectar a los proyectos existentes. En este documento se describen esos cambios y cómo actualizar proyectos a la versión 2.0.0.

Cambios de API en la versión 2.0.0

Desde la versión de RC2, ha habido varios cambios de API, incluidos algunos que pueden interrumpir los proyectos existentes. En las secciones siguientes se describen los cambios que se han producido entre las versiones RC2 y 2.0.0.

MixedRealityToolkit

Las siguientes propiedades públicas en el objeto MixedRealityToolkit han quedado en desuso.

  • RegisteredMixedRealityServices ya no contiene la colección de servicios de extensiones registrados y proveedores de datos.

Para acceder a los servicios de extensión, use MixedRealityServiceRegistry.TryGetService<T>. Para acceder a los proveedores de datos, convierta la instancia de servicio en IMixedRealityDataProviderAccess y use GetDataProvider<T>.

Use MixedRealityServiceRegistry o CoreServices en su lugar para las siguientes propiedades en desuso

  • ActiveSystems
  • InputSystem
  • BoundarySystem
  • CameraSystem
  • SpatialAwarenessSystem
  • TeleportSystem
  • DiagnosticsSystem
  • SceneSystem

CoreServices

La CoreServices clase es el reemplazo de los descriptores de acceso del sistema estáticos (por ejemplo, BoundarySystem) que se encuentran en el MixedRealityToolkit objeto .

Importante

Los MixedRealityToolkit descriptores de acceso del sistema han quedado en desuso en la versión 2.0.0 y se quitarán en una versión futura de MRTK.

En el ejemplo de código siguiente se muestran los patrones antiguos y nuevos.

// Old
GameObject playAreaVisualization = MixedRealityToolkit.BoundarySystem?.GetPlayAreaVisualization();

// New
GameObject playAreaVisualization = CoreServices.BoundarySystem?.GetPlayAreaVisualization();

El uso de la nueva clase CoreSystem garantizará que el código de la aplicación no necesite actualizarse si cambia la aplicación para que use otro registrador de servicios (por ejemplo, uno de los administradores de servicios experimentales).

IMixedRealityRaycastProvider

Con la adición de IMixedRealityRaycastProvider, se cambió el perfil de configuración del sistema de entrada. Si tiene un perfil personalizado, puede recibir los errores de la imagen siguiente al ejecutar la aplicación.

Selección del proveedor de Raycast 1

Para corregirlos, agregue una instancia de IMixedRealityRaycastProvider al perfil del sistema de entrada.

Selección del proveedor de Raycast 2

Sistema de eventos

  • Los IMixedRealityEventSystem métodos de API antiguos Register y Unregister se han marcado como obsoletos. Se conservan para la compatibilidad con versiones anteriores.
  • InputSystemGlobalListener se ha marcado como obsoleto. Su funcionalidad no ha cambiado.
  • BaseInputHandler la clase base se ha cambiado de InputSystemGlobalListener a InputSystemGlobalHandlerListener. Se trata de un cambio importante para los descendientes de BaseInputHandler.

Motivación detrás del cambio

La API Register del sistema de eventos anterior y Unregister podría causar varios problemas en tiempo de ejecución, siendo principal:

  • Si un componente se registra para eventos globales, recibiría eventos de entrada globales de todos los tipos.
  • Si uno de los componentes de un objeto se registra para eventos de entrada globales, todos los componentes de este objeto recibirán eventos de entrada globales de todos los tipos.
  • Si dos componentes del mismo objeto se registran en eventos globales y, a continuación, uno está deshabilitado en tiempo de ejecución, el segundo deja de recibir eventos globales.

Nueva API RegisterHandler y UnregisterHandler:

  • Proporciona un control explícito y granular sobre qué eventos de entrada deben escucharse globalmente y cuáles deben basarse en el foco.
  • Permite que varios componentes del mismo objeto escuchen eventos globales de forma independiente entre sí.

Migración

  • Si ha estado llamando directamente a Register/Unregister la API antes, reemplace estas llamadas por llamadas a .RegisterHandler/UnregisterHandler Use interfaces de controlador que implemente como parámetros genéricos. Si implementa varias interfaces y varias de ellas escuchan eventos de entrada globales, llame a RegisterHandler varias veces.
  • Si ha heredado de InputSystemGlobalListener, cambie la herencia a InputSystemGlobalHandlerListener. Implementar RegisterHandlers y UnregisterHandlers abstraer métodos. En la llamada de inputSystem.RegisterHandler implementación (inputSystem.UnregisterHandler) para registrarse en todas las interfaces de controlador para las que desea escuchar eventos globales.
  • Si ha heredado de BaseInputHandler, implemente RegisterHandlers y UnregisterHandlers métodos abstractos (igual que para InputSystemGlobalListener).

Ejemplos de migración

// 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);
        }
    }
}

Reconocimiento espacial

Las interfaces IMixedRealitySpatialAwarenessSystem e IMixedRealitySpatialAwarenessObserver han realizado varios cambios importantes, como se describe a continuación.

Cambios

Se ha cambiado el nombre de los métodos siguientes para describir mejor su uso.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent se ha cambiado el nombre para IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent aclarar su uso.

Adiciones

En función de los comentarios de los clientes, se ha agregado compatibilidad para la eliminación sencilla de los datos de reconocimiento espacial observados anteriormente.

  • IMixedRealitySpatialAwarenessSystem.ClearObservations()
  • IMixedRealitySpatialAwarenessSystem.ClearObservations<T>(string name)
  • IMixedRealitySpatialAwarenessObserver.ClearObservations()

Solucionadores

Algunos componentes del solucionador y la clase de administrador solverHandler han cambiado para corregir varios errores y para un uso más intuitivo.

SolverHandler

  • La clase ya no se extiende desde ControllerFinder
  • TrackedObjectToReference propiedad pública en desuso y se ha cambiado el nombre a TrackedTargetType
  • TrackedObjectType desusa los valores de controlador izquierdo & derecho. En su lugar, use MotionController valores o HandJoint y actualice una nueva TrackedHandedness propiedad para limitar el seguimiento a controlador izquierdo o derecho.

InBetween

  • TrackedObjectForSecondTransform propiedad pública en desuso y se ha cambiado el nombre a SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() se ha quitado. Para actualizar el solucionador, modifique las propiedades públicas (es decir SecondTrackedObjectType, ).

SurfaceMagnetism

  • MaxDistance propiedad pública en desuso y se ha cambiado el nombre a MaxRaycastDistance
  • CloseDistance propiedad pública en desuso y se ha cambiado el nombre a ClosestDistance
  • El valor predeterminado de RaycastDirectionMode es ahora TrackedTargetForward que raycasts en la dirección de la transformación de destino con seguimiento hacia delante
  • OrientationMode se ha cambiado el nombre de los valores Vertical de enumeración y Full, a TrackedTarget y SurfaceNormal respectivamente
  • KeepOrientationVertical se ha agregado la propiedad public para controlar si la orientación de GameObject asociada permanece vertical

Botones

  • PressableButton ahora tiene DistanceSpaceMode la propiedad establecida Local en como predeterminada. Esto permite escalar los botones mientras se sigue presionando

Recortar esfera

La interfaz ClippingSphere ha cambiado para reflejar las API que se encuentran en ClippingBox y ClippingPlane.

La propiedad Radius de ClippingSphere ahora se calcula implícitamente en función de la escala de transformación. Antes de que los desarrolladores deban especificar el radio de ClippingSphere en el inspector. Si desea cambiar el radio, simplemente actualice la escala de transformación de la transformación como lo haría normalmente.

NearInteractionTouchable y PokePointer

  • NearInteractionTouchable no controla el lienzo de la interfaz de usuario de Unity tocando más tiempo. La clase NearInteractionTouchableUnityUI debe usarse ahora para los elementos táctiles de la interfaz de usuario de Unity.
  • ColliderNearInteractionTouchable es la nueva clase base para los elementos táctiles basados en colisionadores, es decir, todos los elementos táctiles excepto NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront se ha movido y cambiado el nombre a PokePointer.TouchableDistance Esta es la distancia y la cual el PokePointer puede interactuar con los táctiles. Anteriormente, cada táctil tenía su propia distancia máxima de interacción, pero ahora esto se define en el PokePointer, lo que permite una mejor optimización.
  • Se ha cambiado el nombre de BaseNearInteractionTouchable.DistBack a PokeThreshold. Esto deja claro que PokeThreshold es el homólogo de DebounceThreshold. Se activa un touchable cuando se cruza pokeThreshold y se libera cuando se cruza DebounceThreshold.

ReadOnlyAttribute

El Microsoft.MixedReality.Toolkit espacio de nombres se ha agregado a ReadOnlyAttribute, BeginReadOnlyGroupAttributey EndReadOnlyGroupAttribute.

PointerClickHandler

La clase PointerClickHandler está desusada. PointerHandler En su lugar, debe usarse y proporciona la misma funcionalidad.

Compatibilidad con el clicker de HoloLens

Las asignaciones de controladores del clicker de HoloLens han cambiado de ser un WindowsMixedRealityController control no controlado a un control no controlado WindowsMixedRealityGGVHand. Para tener en cuenta esto, un actualizador automático se ejecutará la primera vez que abra el perfil controllerMapping. Abra los perfiles personalizados al menos una vez después de actualizar a la versión 2.0.0 para desencadenar este paso de migración único.

InteractableHighlight

La clase InteractableHighlight está desusada. En su lugar, se debe usar la InteractableOnFocus clase y FocusInteractableStates el recurso. Para crear un nuevo Theme recurso para , haga clic con el InteractableOnFocusbotón derecho en la ventana del proyecto y seleccione Create Mixed Reality Toolkit Interactable Theme (Crear>Mixed Reality Toolkit>Interactable>Theme (Tema interactivo).

HandInteractionPanZoom

HandInteractionPanZoom se ha movido al espacio de nombres de la interfaz de usuario, ya que no era un componente de entrada. HandPanEventData también se ha movido a este espacio de nombres y se ha simplificado para que se corresponda con otros datos de eventos de la interfaz de usuario.

Cambios en el nombre del ensamblado en la versión 2.0.0

En la versión 2.0.0, todos los nombres oficiales de ensamblado de Mixed Reality Toolkit y sus archivos de definición de ensamblado (.asmdef) asociados se han actualizado para ajustarse al siguiente patrón.

Microsoft.MixedReality.Toolkit[.<name>]

En algunos casos, se han combinado varios ensamblados para crear una mejor unidad de su contenido. Si el proyecto usa archivos .asmdef personalizados, es posible que requieran actualización.

En las tablas siguientes se describe cómo los nombres de archivo .asmdef rc2 se asignan a la versión 2.0.0. Todos los nombres de ensamblado coinciden con el nombre de archivo .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 Quitado, use 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.InspectorFields.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.UX.Interactables.asmdef Microsoft.MixedReality.Toolkit.Demos.UX.Interactables.asmdef