Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
- Actualización a una nueva versión de MRTK
- 2.3.0 a 2.4.0
- 2.2.0 a 2.3.0
- 2.1.0 a 2.2.0
- 2.0.0 a 2.1.0
- RC2 a 2.0.0
Búsqueda de la versión actual
Siga estas instrucciones para averiguar qué versión de MRTK está usando actualmente:
- Abrir el proyecto de MRTK en Unity
- Vaya a la carpeta "MixedRealityToolkit" en la ventana de Project.
- 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:
- Vaya a la carpeta "Mixed Reality Toolkit Foundation"
- Haga clic en el "package.json" para ver una vista previa en Unity o ábrala con un editor de texto.
- 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,
- Guarde una copia del proyecto actual, en caso de que alcance algún problema en cualquier punto de los pasos de actualización.
- Cerrar Unity
- 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.
- 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.
- Volver a abrir el proyecto en Unity
- 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
- 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.
- 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.
- 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.
- Guarde una copia del proyecto actual.
- Cerrar Unity
- 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.
- 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.
- 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)
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.
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 Enabledpublic bool FocusEnabledpublic void ForceUpdateThemes()public bool IsDisabledpublic bool IsToggleButtonpublic int GetDimensionIndex()public State[] GetStates()public bool RequiresFocuspublic 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.
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.
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
MouseLookToggleanteriormente se incluía en laMouseLookButtonenumeración comoInputSimulationMouseButton.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.HandDepthMultiplierEl 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.Las teclas para girar las manos se han quitado, la rotación de la mano ahora también está controlada por el mouse. Mantener
HandRotateButtonpresionada (Ctrl) junto con la tecla de manipulación izquierda/derecha (LShift/Espacio) habilitará la rotación de la mano.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.
-
RegisteredMixedRealityServicesya 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.
ActiveSystemsInputSystemBoundarySystemCameraSystemSpatialAwarenessSystemTeleportSystemDiagnosticsSystemSceneSystem
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.
Para corregirlos, agregue una instancia de IMixedRealityRaycastProvider al perfil del sistema de entrada.
Sistema de eventos
- Los
IMixedRealityEventSystemmétodosRegisterde API antiguos yUnregisterse han marcado como obsoletos. Se conservan para la compatibilidad con versiones anteriores. -
InputSystemGlobalListenerse ha marcado como obsoleto. Su funcionalidad no ha cambiado. -
BaseInputHandlerla clase base se ha cambiado deInputSystemGlobalListeneraInputSystemGlobalHandlerListener. Se trata de un cambio importante para los descendientes deBaseInputHandler.
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/Unregisterla API directamente antes, reemplace estas llamadas por llamadas aRegisterHandler/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 aRegisterHandlervarias veces. - Si ha heredado de , cambie la
InputSystemGlobalListenerherencia aInputSystemGlobalHandlerListener. ImplementarRegisterHandlersyUnregisterHandlersmétodos abstractos. En la llamadainputSystem.RegisterHandlerde implementación (inputSystem.UnregisterHandler) para registrarse en todas las interfaces de controlador para las que desea escuchar eventos globales. - Si ha heredado de
BaseInputHandler, implementeRegisterHandlersyUnregisterHandlersabstracte métodos (igual que paraInputSystemGlobalListener).
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.CreateSpatialObjectParentse ha cambiado el nombre a paraIMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParentaclarar 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 -
TrackedObjectToReferencepropiedad pública en desuso y se ha cambiado el nombre aTrackedTargetType -
TrackedObjectTypedeja de usar los valores de controlador izquierdo & derecho. En su lugar, useMotionControlleroHandJointvalores y actualice la nuevaTrackedHandednesspropiedad para limitar el seguimiento al controlador izquierdo o derecho.
InBetween
-
TrackedObjectForSecondTransformpropiedad pública en desuso y se ha cambiado el nombre aSecondTrackedObjectType -
AttachSecondTransformToNewTrackedObject()se ha quitado. Para actualizar el solucionador, modifique las propiedades públicas (es decirSecondTrackedObjectType, )
SurfaceMagnetism
-
MaxDistancepropiedad pública en desuso y se ha cambiado el nombre aMaxRaycastDistance -
CloseDistancepropiedad pública en desuso y se ha cambiado el nombre aClosestDistance - El valor predeterminado de
RaycastDirectionModees ahoraTrackedTargetForwardel que raycasts en la dirección de la transformación de destino a la que se realiza el seguimiento hacia delante -
OrientationModelos valores de enumeración,VerticalyFull, se han cambiado de nombre aTrackedTargetySurfaceNormal, respectivamente, -
KeepOrientationVerticalse ha agregado la propiedad pública para controlar si la orientación de GameObject asociada permanece vertical
Botones
-
PressableButtonahora tieneDistanceSpaceModela propiedad establecida enLocalcomo 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 |