Actualización desde versiones anteriores: MRTK2

Búsqueda de la versión actual

Siga estas instrucciones para averiguar qué versión de MRTK está usando actualmente:

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

Si el archivo y la carpeta anteriores no existen, se encuentra 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 el "package.json" para ver una vista previa en Unity o ábrala 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 ajustarse a cambios importantes. La herramienta de migración forma parte del paquete Herramientas .

Las instrucciones siguientes describen la ruta de actualización de 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 versión por versión.

Mixed Reality Herramienta de características

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 es descargar manualmente los paquetes de MRTK Unity y aplicarlos al proyecto. Consulte los pasos siguientes,

  1. Guarde una copia del proyecto actual, en caso de que alcance algún problema en cualquier punto de los pasos de actualización.
  2. Cerrar Unity
  3. Dentro de la carpeta Activos , elimine las siguientes carpetas MRTK , junto con sus archivos .meta (es posible que el proyecto no tenga todas las carpetas enumeradas)
    • MRTK/Core
    • EJEMPLOS/MRTK
    • MRTK/Extensiones
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Importante

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

    • MRTK/Tools

    Importante

    NO elimine la carpeta MixedRealityToolkit.Generated ni 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 haga, copie primero la carpeta de datos de la herramienta de la biblioteca antes de eliminarla y, después, restaure la biblioteca después de volver a generarla.

  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 primero la nota siguiente). 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án presentes, de la jerarquía. Esto eliminará la cámara principal, pero se volverá a crear en el paso siguiente. Si se han cambiado manualmente las propiedades de la cámara principal, estas tendrán que volver a aplicarse manualmente una vez creada la nueva cámara.
    • Seleccione MixedRealityToolkit - Add to Scene and Configure (MixedRealityToolkit:> agregar a la escena y configurar)
    • Seleccione MixedRealityToolkit -> Utilities -> Update -> Controller Mapping Profiles (solo debe realizarse una vez): esto actualizará los perfiles de asignación de controladores personalizados con los ejes y datos actualizados, al tiempo que dejará intactas las acciones de entrada asignadas de forma personalizada.
  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 en busca de objetos que se van a migrar).
    • 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 de la lista desplegable. (Vea 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 Herramienta de características

Cambiar de archivos de recursos de Unity a Mixed Reality paquetes de herramientas de características ofrece 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 Activos , elimine las siguientes carpetas MRTK , junto con sus archivos .meta (es posible que el proyecto no tenga todas las carpetas enumeradas)
    • MRTK/Core
    • EJEMPLOS/MRTK
    • MRTK/Extensiones
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Services
    • MRTK/StandardAssets

    Importante

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

    • MRTK/Tools

    Importante

    NO elimine la carpeta MixedRealityToolkit.Generated ni 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 haga, copie primero la carpeta de datos de la herramienta de la biblioteca antes de eliminarla y, después, restaure la biblioteca después de volver a generarla.

  5. Volver a abrir el proyecto en Unity

Una vez realizados los pasos anteriores, ejecute la herramienta de características de Mixed Reality e importe la versión deseada de Mixed Reality Toolkit.

Actualización de 2.3.0 a 2.4.0

La carpeta cambia el nombre de loscambios de 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 EJEMPLOS/MRTK
MixedRealityToolkit.Extensions MRTK/Extensiones
MixedRealityToolkit.Providers MRTK/Providers
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Services
MixedRealityToolkit.Tests MRTK/Tests
MixedRealityToolkit.Tools MRTK/Tools

Importante

MixedRealityToolkit.Generated contiene 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 de los ojos. La casilla "IsEyeTrackingEnabled" se encuentra 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 predeterminada basada en la cabeza.

Para obtener más información sobre estos cambios e instrucciones completas para la configuración del seguimiento ocular, consulte el artículo de 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 de la cabeza. Un puntero de mirada de ojos se suprimirá automáticamente una vez que se detecte una mano. El puntero de mirada de los ojos volverá a ser visible después de decir "Seleccionar".

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

Cambios de API en la versión 2.4.0

Clases de controlador personalizado

Anteriormente, las clases de controlador personalizado tenían que definir SetupDefaultInteractions(Handedness). Este método se ha quedado obsoleto en 2.4, ya que el parámetro de entrega era redundante con la propia entrega 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 realizado una invalidación opcional en lugar de necesaria.

Propiedades de eye gaze

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

Si lo hizo anteriormente...

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

Haga 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. Use IsMethodAvailable, 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 la malla gltf que se solían establecer, ahora son de solo lectura. Sus valores se establecerán una vez cuando se deserializen.

Migración del icono de botón personalizado

Los iconos de botón personalizados anteriormente requerían la asignación de un nuevo material al representador cuadrángulo del botón. Esto ya no es necesario y se recomienda mover texturas de iconos personalizados 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 -> Utilities -> Migration Window -> Migration Handler Selection -> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Cuadro de diálogo actualizar ventana

Si no se encuentra un icono en el icono predeterminado establecido durante la migración, se creará un conjunto de iconos personalizados en MixedRealityToolkit.Generated/CustomIconSets. Un cuadro de diálogo indicará que esto 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 ControllerPoseSynchronizer.handedness privado se ha marcado como obsoleto. Esto debería 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 ControllerPoseSynchronizer.Handedness pública (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 del 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 errores de compilación.

StartupBehavior del observador espacial

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

No es necesario realizar cambios para aprovechar esta corrección.

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 una 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 ha cambiado de Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input a Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863).

Actualice #using instrucciones para resolver 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 tomó anteriormente 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 Type 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 se extienden BaseNearInteractionTouchable (por ejemplo, NearInteractionTouchableUnityUI) se han actualizado para reflejar este cambio.

ColliderNearInteractionTouchable

La ColliderNearInteractionTouchable clase ha quedado en desuso. Actualice las referencias de código para usar BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Añadido

IMixedRealityMouseDeviceManager se han agregado CursorSpeed propiedades y WheelSpeed . 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 de mouse.

Nota:

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

En desuso

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 la aplicación ya no use esta propiedad.

Interactable

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 Obsolete 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

Se NearInteractionTouchableSurface ha agregado la clase y ahora actúa como la clase base para NearInteractionTouchable y NearInteractionTouchableUnityUI.

Cambios de perfil en la versión 2.1.0

Perfil de seguimiento manual

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

Modos de visualización manual

Es posible que sea necesario actualizar los perfiles de seguimiento manual personalizados 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

El sistema de simulación de entrada se ha actualizado, lo que cambia algunos valores 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 de keyCode y botón del mouse del perfil se han reemplazado por una estructura genérica KeyBinding , que almacena el tipo de enlace (clave o mouse), así como el código de enlace real (KeyCode o número de botón del mouse, respectivamente). La estructura tiene su propio inspector, que permite una visualización unificada y ofrece una herramienta de "enlace automático" para establecer rápidamente enlaces de teclas presionando la clave correspondiente en lugar de seleccionarla 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 esté habilitada, 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 la mano ahora también está controlada por el mouse. Mantener HandRotateButton presionada (Ctrl) junto con la tecla de manipulación izquierda/derecha (LShift/Espacio) habilitará la rotación de la mano.

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

Para obtener más información sobre estos cambios, consulte el artículo del 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 valores predeterminados proporcionados. Cuando se guarda el perfil, estos nuevos valores se conservarán.

Perfil de asignación de controlador

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 - Utilidades ->> Actualización -> Perfiles de asignación de controladores al actualizar. Esto actualizará los perfiles de asignación de controlador personalizados con los ejes y datos actualizados, al tiempo que se dejan intactas las acciones de entrada asignadas de forma personalizada.

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 los proyectos a la versión 2.0.0.

Cambios de API en la versión 2.0.0

Desde el lanzamiento de RC2, se han producido varios cambios en la 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 del objeto MixedRealityToolkit han quedado en desuso.

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

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ático (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 muestra el patrón antiguo y el nuevo.

// 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 necesitará actualizarse si cambia la aplicación para usar un registrador de servicios diferente (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, es posible que reciba los errores de la siguiente imagen 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 Register de API antiguos 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 antigua y Unregister podría causar varios problemas en tiempo de ejecución, principalmente:

  • 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 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 pormenorizado sobre qué eventos de entrada se deben escuchar globalmente y cuáles deben basarse en el foco.
  • Permite que varios componentes del mismo objeto escuchen eventos globales de forma independiente entre sí.

Cómo migrar

  • Si ha estado llamando a Register/Unregister la API directamente 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 , cambie la InputSystemGlobalListenerherencia a InputSystemGlobalHandlerListener. Implementar RegisterHandlers y UnregisterHandlers métodos abstractos. En la llamada inputSystem.RegisterHandler de 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 abstracte métodos (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 a para IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent aclarar su uso.

Adiciones

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

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

Solvers

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 deja de usar los valores de controlador izquierdo & derecho. En su lugar, use MotionController o HandJoint valores y actualice la nueva TrackedHandedness propiedad para limitar el seguimiento al 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 el que raycasts en la dirección de la transformación de destino a la que se realiza el seguimiento hacia delante
  • OrientationMode los valores de enumeración, Vertical y Full, se han cambiado de nombre a TrackedTarget y SurfaceNormal , respectivamente,
  • KeepOrientationVertical se ha agregado la propiedad pública para controlar si la orientación de GameObject asociada permanece vertical

Botones

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

Esfera de recorte

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 tuvieran que especificar el radio de ClippingSphere en el inspector. Si desea cambiar el radio, actualice la escala de transformación de la transformación como lo haría normalmente.

NearInteractionTouchable y PokePointer

  • NearInteractionTouchable no controla que el lienzo de la interfaz de usuario de Unity se toque 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 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 que pokePointer puede interactuar con objetos táctiles. Anteriormente cada touchable tenía su propia distancia de interacción máxima, pero ahora esto se define en pokePointer 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. Cuando se cruza el PokeThreshold, se activa un objeto táctil y se libera cuando se cruza DebounceThreshold.

ReadOnlyAttribute

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

PointerClickHandler

La PointerClickHandler clase ha quedado en desuso. Debe PointerHandler usarse en su lugar, proporciona la misma funcionalidad.

Compatibilidad con el clicker de HoloLens

Las asignaciones de controladores del clicker de HoloLens han cambiado de ser un objeto sin administrar WindowsMixedRealityController a ser un objeto sin tratar WindowsMixedRealityGGVHand. Para tener en cuenta esto, se ejecutará un actualizador automático 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 única.

InteractableHighlight

La InteractableHighlight clase ha quedado en desuso. En su lugar, se deben 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 Crear> Mixed RealityTemainteractable>del kit de herramientas>.

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 de ensamblado oficiales de Mixed Reality Toolkit y sus archivos de definición de ensamblado asociados (.asmdef) 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 necesiten actualizarse.

En las tablas siguientes se describe cómo los nombres de archivo RC2 .asmdef 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 Eliminado, 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.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.UX.Interactables.asmdef Microsoft.MixedReality.Toolkit.Demos.UX.Interactables.asmdef