Actualización desde versiones anteriores: MRTK2
- Actualización a una nueva versión de MRTK
- De 2.3.0 a 2.4.0
- De 2.2.0 a 2.3.0
- De 2.1.0 a 2.2.0
- De 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 usa actualmente:
- Apertura del proyecto de MRTK en Unity
- Vaya a la carpeta "MixedRealityToolkit" en la ventana Proyecto.
- 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:
- Vaya a la carpeta "Mixed Reality Toolkit Foundation"
- Haga clic en "package.json" para ver una vista previa en Unity o abrirla 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 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:
- Guarde una copia del proyecto actual, en caso de que se alcancen los snags en cualquier momento de los pasos de actualización.
- Cerrar Unity
- 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.
- 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.
- 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 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.
- 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.
- 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.
- Guarde una copia del proyecto actual.
- Cerrar Unity
- 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.
- 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.
- 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. IsMethodAvailable
Use , 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)
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.
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.
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.
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
MouseLookToggle
anteriormente se incluía en laMouseLookButton
enumeración comoInputSimulationMouseButton.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.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.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.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.
Para corregirlos, agregue una instancia de IMixedRealityRaycastProvider al perfil del sistema de entrada.
Sistema de eventos
- Los
IMixedRealityEventSystem
métodos de API antiguosRegister
yUnregister
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 deInputSystemGlobalListener
aInputSystemGlobalHandlerListener
. Se trata de un cambio importante para los descendientes deBaseInputHandler
.
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 aRegisterHandler
varias veces. - Si ha heredado de
InputSystemGlobalListener
, cambie la herencia aInputSystemGlobalHandlerListener
. ImplementarRegisterHandlers
yUnregisterHandlers
abstraer métodos. En la llamada deinputSystem.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
, implementeRegisterHandlers
yUnregisterHandlers
métodos abstractos (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.CreateSpatialObjectParent
se ha cambiado el nombre paraIMixedRealitySpatialAwarenessSystem.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 aTrackedTargetType
TrackedObjectType
desusa los valores de controlador izquierdo & derecho. En su lugar, useMotionController
valores oHandJoint
y actualice una nuevaTrackedHandedness
propiedad para limitar el seguimiento a controlador izquierdo o derecho.
InBetween
TrackedObjectForSecondTransform
propiedad 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
MaxDistance
propiedad pública en desuso y se ha cambiado el nombre aMaxRaycastDistance
CloseDistance
propiedad pública en desuso y se ha cambiado el nombre aClosestDistance
- El valor predeterminado de
RaycastDirectionMode
es ahoraTrackedTargetForward
que raycasts en la dirección de la transformación de destino con seguimiento hacia delante OrientationMode
se ha cambiado el nombre de los valoresVertical
de enumeración yFull
, aTrackedTarget
ySurfaceNormal
respectivamenteKeepOrientationVertical
se ha agregado la propiedad public para controlar si la orientación de GameObject asociada permanece vertical
Botones
PressableButton
ahora tieneDistanceSpaceMode
la propiedad establecidaLocal
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
, BeginReadOnlyGroupAttribute
y 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 InteractableOnFocus
botó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 |