Atualização de versões anteriores — MRTK2

Localizando a versão atual

Siga estas instruções para descobrir qual versão do MRTK você está usando no momento:

  1. Abra seu projeto do MRTK no Unity
  2. Navegue até a pasta "MixedRealityToolkit" na janela projeto
  3. Abra o arquivo chamado "Versão"

Se o arquivo e a pasta acima não existirem, você estará em uma versão mais recente do MRTK. Nesse caso, tente o seguinte:

  1. Navegue até a pasta "Realidade Misturada Toolkit Foundation"
  2. Clique no "package.json" para ver uma visualização no Unity ou abra-a com um editor de texto
  3. Procure a linha com a palavra "version:"

Atualizando para uma nova versão do MRTK

É altamente recomendável executar a ferramenta de migração depois de obter a atualização do MRTK para corrigir e atualizar automaticamente de componentes preteridos e ajustar-se a alterações interruptivas. A ferramenta de migração faz parte do pacote Ferramentas .

As instruções a seguir descrevem o caminho de atualização 2.4.0 para 2.5.0. Se o projeto estiver na versão 2.3.0 ou anterior, leia as alterações entre as versões para entender o caminho de atualização ou leia as instruções da versão anterior para fazer uma atualização versão por versão.

Ferramenta Recurso de Realidade Misturada

A maneira mais fácil de atualizar o MRTK para uma versão mais recente do MRTK é usando a Ferramenta de Recursos do Realidade Misturada para baixar os pacotes mais recentes e carregá-los diretamente em seu projeto do Unity.

Se o projeto usou anteriormente arquivos de ativo do Unity (.unitypackage), consulte estas instruções.

Arquivos de ativos do Unity (.unitypackage)

Outro caminho de atualização é baixar manualmente os pacotes do UNITY do MRTK e aplicá-los ao seu projeto. Veja as etapas abaixo,

  1. Salve uma cópia do projeto atual, caso você tenha problemas a qualquer momento nas etapas de atualização.
  2. Fechar o Unity
  3. Dentro da pasta Ativos , exclua as seguintes pastas mrtk , juntamente com seus arquivos .meta (o projeto pode não ter todas as pastas listadas)
    • MRTK/Core
    • MRTK/Exemplos
    • MRTK/Extensões
    • MRTK/Provedores
    • MRTK/SDK
    • MRTK/Serviços
    • MRTK/StandardAssets

    Importante

    Se foram feitas modificações nos sombreadores do MRTK, crie um backup local antes de excluir a pasta MRTK/StandardAssets

    • MRTK/Ferramentas

    Importante

    NÃO exclua a pasta MixedRealityToolkit.Generated ou seu arquivo .meta.

  4. Excluir a pasta Biblioteca

    Importante

    Algumas ferramentas do Unity, como o Unity Collab, salvam informações de configuração na pasta Biblioteca. Se estiver usando uma ferramenta que faça isso, primeiro copie a pasta de dados da ferramenta da Biblioteca antes de excluí-la e restaure-a depois que a Biblioteca for regenerada.

  5. Reabrir o projeto no Unity
  6. Importar os novos pacotes do Unity
    • Foundation – Importar este pacote primeiro
    • Ferramentas
    • (Opcional) Extensões

    Observação

    Se extensões adicionais tiverem sido instaladas, talvez precisem ser importadas novamente.

    • (Opcional) Exemplos
  7. Feche o Unity e exclua a pasta Biblioteca (leia a observação abaixo primeiro!). Essa etapa é necessária para forçar o Unity a atualizar seu banco de dados de ativos e reconciliar perfis personalizados existentes.
  8. Iniciar o Unity e para cada cena no projeto
    • Exclua MixedRealityToolkit e MixedRealityPlayspace, se houver, da hierarquia. Isso excluirá a câmera main, mas ela será recriada na próxima etapa. Se alguma propriedade do main câmera tiver sido alterada manualmente, elas precisarão ser reaplicadas manualmente depois que a nova câmera for criada.
    • Selecione MixedRealityToolkit –> Adicionar à Cena e Configurar
    • Selecione MixedRealityToolkit -> Utilitários -> Atualização -> Perfis de Mapeamento do Controlador (só precisa ser feito uma vez) - Isso atualizará todos os perfis de mapeamento de controlador personalizados com eixos e dados atualizados, deixando suas ações de entrada atribuídas personalizadas intactas
  9. Execute a ferramenta de migração e execute a ferramenta no Projeto Completo para garantir que todo o código seja atualizado para o mais recente. A janela de migração contém vários manipuladores de migração diferentes, que devem ser executados por conta própria. Esta etapa envolve:
    • Selecione o primeiro manipulador de migração na lista suspensa Seleção do Manipulador de Migração .
    • Clique no botão "Projeto Completo".
    • Clique no botão "Adicionar projeto completo para migração" (isso examinará todo o projeto em busca de objetos a serem migrados).
    • Clique no botão "Migrar", que deverá ser habilitado se algum objeto migrável for encontrado.
    • Repita as três etapas anteriores para cada um dos manipuladores de migração na lista suspensa. (Confira este problema que aborda o trabalho que pode ser feito para simplificar esse processo de migração em uma versão futura)

Alternar de arquivos de ativos do Unity para Realidade Misturada Ferramenta de Recursos

Alternar de arquivos de ativos do Unity para Realidade Misturada pacotes da Ferramenta de Recursos traz uma série de benefícios:

  • Atualização mais fácil
  • Tempos de compilação mais rápidos
  • Menos projetos na solução do Visual Studio

Alterar para usar a Ferramenta de Recurso Realidade Misturada requer um conjunto único de etapas manuais.

  1. Salve uma cópia do projeto atual.
  2. Fechar o Unity
  3. Dentro da pasta Ativos , exclua as seguintes pastas mrtk , juntamente com seus arquivos .meta (o projeto pode não ter todas as pastas listadas)
    • MRTK/Core
    • MRTK/Exemplos
    • MRTK/Extensões
    • MRTK/Provedores
    • MRTK/SDK
    • MRTK/Serviços
    • MRTK/StandardAssets

    Importante

    Se foram feitas modificações nos sombreadores do MRTK, crie um backup local antes de excluir a pasta MRTK/StandardAssets

    • MRTK/Ferramentas

    Importante

    NÃO exclua a pasta MixedRealityToolkit.Generated ou seu arquivo .meta.

  4. Excluir a pasta Biblioteca

    Importante

    Algumas ferramentas do Unity, como o Unity Collab, salvam informações de configuração na pasta Biblioteca. Se estiver usando uma ferramenta que faça isso, primeiro copie a pasta de dados da ferramenta da Biblioteca antes de excluí-la e restaure-a depois que a Biblioteca for regenerada.

  5. Reabrir o projeto no Unity

Depois que as etapas anteriores tiverem sido executadas, execute o Realidade Misturada Feature Tool e importe a versão desejada do Realidade Misturada Toolkit.

Atualizando 2.3.0 para 2.4.0

Alterações de APIde renomeação de pasta

Renomeações de pasta na versão 2.4.0

As pastas MixedRealityToolkit foram renomeadas e movidas para uma hierarquia comum na versão 2.4. Se um aplicativo usar caminhos embutidos em código para recursos do MRTK, ele precisará ser atualizado de acordo com a tabela a seguir.

Pasta Anterior Nova Pasta
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/Exemplos
MixedRealityToolkit.Extensions MRTK/Extensões
MixedRealityToolkit.Providers MRTK/Provedores
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Serviços
MixedRealityToolkit.Tests MRTK/Testes
MixedRealityToolkit.Tools MRTK/Ferramentas

Importante

O MixedRealityToolkit.Generated contém arquivos gerados pelo cliente e permanece inalterado.

Configuração de foco ocular na versão 2.4.0

Esta versão do MRTK modifica as etapas necessárias para a configuração do olhar. A caixa de seleção 'IsEyeTrackingEnabled' pode ser encontrada nas configurações de foco do perfil do ponteiro de entrada. A verificação dessa caixa habilitará o foco com base nos olhos, em vez do foco padrão baseado na cabeça.

Para obter mais informações sobre essas alterações e instruções completas para configuração de acompanhamento ocular, consulte o artigo de acompanhamento ocular .

Comportamento do ponteiro do olhar em 2.4.0

O comportamento do ponteiro padrão do olhar foi modificado para corresponder ao comportamento do ponteiro padrão do foco na cabeça. Um ponteiro de foco ocular será suprimido automaticamente quando uma mão for detectada. O ponteiro do olhar ficará visível novamente depois de dizer "Selecionar".

Detalhes sobre configurações de foco e mão podem ser encontrados no artigo olhos e mãos .

Alterações de API na 2.4.0

Classes de controlador personalizadas

As classes de controlador personalizadas anteriormente tinham que definir SetupDefaultInteractions(Handedness). Esse método ficou obsoleto na versão 2.4, pois o parâmetro de entrega foi redundante com a própria entrega da classe do controlador. O novo método não tem parâmetros. Além disso, muitas classes de controlador definiram isso da mesma maneira (AssignControllerMappings(DefaultInteractions);), portanto, a chamada completa foi refatorada BaseController e fez uma substituição opcional em vez de necessária.

Propriedades do Foco nos Olhos

A UseEyeTracking propriedade da GazeProvider implementação de IMixedRealityEyeGazeProvider foi renomeada para IsEyeTrackingEnabled.

Se você fez isso anteriormente...

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

Faça isso agora...

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

Propriedades do WindowsApiChecker

As propriedades do WindowsApiChecker a seguir foram marcadas como obsoletas. IsMethodAvailableUse ou IsPropertyAvailableIsTypeAvailable.

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

Não há planos para adicionar propriedades ao WindowsApiChecker para versões futuras do contrato de API.

GltfMeshPrimitiveAttributes somente leitura

Os atributos primitivos da malha gltf usados para serem configuráveis, agora são somente leitura. Seus valores serão definidos uma vez quando desserializados.

Migração de ícone de botão personalizado

Ícones de botão personalizados anteriormente exigiam a atribuição de um novo material ao renderizador quádruplo do botão. Isso não é mais necessário e recomendamos mover texturas de ícone personalizadas para um IconSet. Os materiais e ícones personalizados existentes são preservados. No entanto, eles serão menos ideais até serem atualizados. Para atualizar os ativos em todos os botões do projeto para o novo formato recomendado, use ButtonConfigHelperMigrationHandler. (Realidade Misturada Toolkit -> Utilitários -> Janela de Migração -> Seleção do Manipulador de Migração -> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Diálogo de janela de atualização

Se um ícone não for encontrado no conjunto de ícones padrão durante a migração, um conjunto de ícones personalizado será criado em MixedRealityToolkit.Generated/CustomIconSets. Uma caixa de diálogo indicará que isso ocorreu.

Notificação de ícone personalizado

Atualizando 2.2.0 para 2.3.0

Alterações de API na 2.3.0

ControllerPoseSynchronizer

O campo ControllerPoseSynchronizer.handedness privado foi marcado como obsoleto. Isso deve ter um impacto mínimo sobre os aplicativos, pois o campo não está visível fora de sua classe.

O setter da propriedade pública ControllerPoseSynchronizer.Handedness foi removido (#7012).

MSBuild para Unity

Esta versão do MRTK usa uma versão mais recente do MSBuild para Unity do que as versões anteriores. Durante a carga do projeto, se a versão mais antiga estiver listada no manifesto do Gerenciador de Pacotes do Unity, a caixa de diálogo de configuração será exibida, com a opção Habilitar o MSBuild para Unity marcada. A aplicação executará uma atualização.

ScriptingUtilities

A classe ScriptingUtilities foi marcada como obsoleta e foi substituída por ScriptUtilities, no assembly Microsoft.MixedReality.Toolkit.Editor.Utilities. A nova classe refina o comportamento anterior e adiciona suporte para remover definições de script.

Embora o código existente continue funcionando na versão 2.3.0, é recomendável atualizar para a nova classe.

ShellHandRayPointer

Os membros lineRendererSelected e lineRendererNoTarget da classe ShellHandRayPointer foram substituídos por lineMaterialSelected e lineMaterialNoTarget, respectivamente (#6863).

Substitua lineRendererSelected por lineMaterialSelected e/ou lineRendererNoTarget por lineMaterialNoTarget para resolve compilar erros.

Observador espacial StartupBehavior

Observadores espaciais criados com base na BaseSpatialObserver classe agora respeitam o valor de StartupBehavior quando habilitado novamente (#6919).

Nenhuma alteração é necessária para aproveitar essa correção.

Pré-fabricados de controle de UX atualizados para usar PressableButton

Os pré-fabricados a seguir agora estão usando o componente PressableButton em vez de TouchHandler para interação próxima (7070)

  • AnimationButton
  • Botão
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • ToggleSwitch
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

O código do aplicativo pode exigir atualização devido a essa alteração.

Namespace WindowsMixedRealityUtilities

O namespace de WindowsMixedRealityUtilities mudou de Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input para Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863).

Atualize #using instruções para resolve erros de compilação.

Atualizando 2.1.0 para 2.2.0

Alterações de API na versão 2.2.0

IMixedRealityBoundarySystem.Contains

Esse método anteriormente recebeu uma enumeração experimental específica definida pelo Unity. Agora, ele usa uma enumeração definida pelo MRTK idêntica à enumeração do Unity. Essa alteração ajuda a preparar o MRTK para as APIs de limite futuras do Unity.

MixedRealityServiceProfileAttribute

Para descrever melhor os requisitos para dar suporte a um perfil, o MixedRealityServiceProfileAttribute foi atualizado para adicionar uma coleção opcional de tipos excluídos. Como parte dessa alteração, a propriedade ServiceType foi alterada de Type para Type[] e foi renomeada para RequiredTypes.

Uma segunda propriedade, ExcludedTypes, também foi adicionada.

Atualizando 2.0.0 para 2.1.0

Alterações de API na versão 2.1.0

BaseNearInteractionTouchable

O BaseNearInteractionTouchable foi modificado para marcar o OnValidate método como virtual. Classes que se estendem BaseNearInteractionTouchable (por exemplo: NearInteractionTouchableUnityUI) foram atualizadas para refletir essa alteração.

ColliderNearInteractionTouchable

A classe ColliderNearInteractionTouchable foi substituída. Atualize as referências de código para usar BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Adicionado

IMixedRealityMouseDeviceManager foram adicionadas CursorSpeed as propriedades e WheelSpeed . Essas propriedades permitem que os aplicativos especifiquem um valor multiplicador pelo qual a velocidade do cursor e da roda, respectivamente, será dimensionada.

Essa é uma alteração interruptiva e requer que as implementações existentes do gerenciador de dispositivos do mouse sejam modificadas.

Observação

Essa alteração não é compatível com versões anteriores com a versão 2.0.0.

Preterido

A MouseInputProfile propriedade foi marcada como obsoleta e será removida de uma versão futura do Microsoft Realidade Misturada Toolkit. É recomendável que o código do aplicativo não use mais essa propriedade.

Interativo

Os métodos e propriedades a seguir foram preteridos e serão removidos de uma versão futura do Microsoft Realidade Misturada Toolkit. A recomendação é atualizar o código do aplicativo de acordo com as diretrizes contidas no atributo Obsoleto e exibidas no console.

  • 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

A NearInteractionTouchableSurface classe foi adicionada e agora serve como a classe base para NearInteractionTouchable e NearInteractionTouchableUnityUI.

Alterações de perfil na versão 2.1.0

Perfil de acompanhamento manual

A malha manual e as visualizações conjuntas agora têm configurações separadas do editor e do player. O perfil de acompanhamento manual foi atualizado para permitir a configuração dessas visualizações como; Nada, Tudo, Editor ou Jogador.

Modos de visualização manual

Os perfis de acompanhamento manual personalizados podem precisar ser atualizados para funcionar corretamente com a versão 2.1.0.

Observação

Essa alteração não é compatível com versões anteriores com a versão 2.0.0.

Perfil de simulação de entrada

O sistema de simulação de entrada foi atualizado, o que altera algumas configurações no perfil de simulação de entrada. Algumas alterações não podem ser migradas automaticamente e os usuários podem descobrir que os perfis estão usando valores padrão.

  1. Todas as associações de botão keycode e mouse no perfil foram substituídas por um struct genérico KeyBinding , que armazena o tipo de associação (chave ou mouse), bem como o código de associação real (KeyCode ou número do botão do mouse, respectivamente). O struct tem seu próprio inspetor, que permite a exibição unificada e oferece uma ferramenta de "associação automática" para definir rapidamente as associações de teclas pressionando a respectiva tecla em vez de selecionar em uma lista suspensa enorme.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle foi incluído anteriormente na MouseLookButton enumeração como InputSimulationMouseButton.Focused, agora é uma opção separada. Quando habilitada, a câmera continuará girando com o mouse depois de liberar o botão, até que a tecla de escape seja pressionada.

  3. HandDepthMultiplier O valor padrão foi reduzido de 0,1 para 0,03 para acomodar algumas alterações na simulação de entrada. Se a câmera se mover muito rápido ao rolar, tente baixar esse valor.

  4. As teclas para girar as mãos foram removidas, a rotação das mãos agora também é controlada pelo mouse. Segurar HandRotateButton (Ctrl) junto com a tecla de manipulação da mão esquerda/direita (LShift/Espaço) habilitará a rotação da mão.

  5. Um novo eixo "UpDown" foi introduzido na lista de eixos de entrada. Isso controla o movimento da câmera na vertical e usa como padrão as teclas Q/E, bem como os botões de gatilho do controlador.

Para obter mais informações sobre essas alterações, consulte o artigo serviço de simulação de entrada .

Perfil do provedor de dados do mouse

O perfil do provedor de dados do mouse foi atualizado para expor as propriedades e novas CursorSpeedWheelSpeed . Os perfis personalizados existentes terão automaticamente valores padrão fornecidos. Quando o perfil for salvo, esses novos valores serão persistidos.

Perfil de mapeamento do controlador

Alguns eixos e tipos de entrada foram atualizados na versão 2.1.0, especialmente em torno da plataforma OpenVR. Selecione MixedRealityToolkit –> Utilitários – Atualização –>> Perfis de Mapeamento do Controlador ao atualizar. Isso atualizará todos os Perfis de Mapeamento de Controlador personalizados com os eixos e dados atualizados, deixando as ações de entrada atribuídas personalizadas intactas.

Atualizando o RC2 para 2.0.0

Entre as versões RC2 e 2.0.0 do Microsoft Realidade Misturada Toolkit, foram feitas alterações que podem afetar projetos existentes. Este documento descreve essas alterações e como atualizar projetos para a versão 2.0.0.

Alterações de API na versão 2.0.0

Desde o lançamento do RC2, houve várias alterações de API, incluindo algumas que podem interromper projetos existentes. As seções a seguir descrevem as alterações que ocorreram entre as versões RC2 e 2.0.0.

MixedRealityToolkit

As propriedades públicas a seguir no objeto MixedRealityToolkit foram preteridas.

  • RegisteredMixedRealityServices não contém mais a coleção de serviços de extensões registrados e provedores de dados.

Para acessar serviços de extensão, use MixedRealityServiceRegistry.TryGetService<T>. Para acessar provedores de dados, converta a instância de serviço em IMixedRealityDataProviderAccess e use GetDataProvider<T>.

Use MixedRealityServiceRegistry ou CoreServices , em vez disso, para as propriedades preteridas a seguir

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

CoreServices

A CoreServices classe é a substituição dos acessadores estáticos do sistema (por exemplo: BoundarySystem) encontrados no MixedRealityToolkit objeto .

Importante

Os MixedRealityToolkit acessadores do sistema foram preteridos na versão 2.0.0 e serão removidos em uma versão futura do MRTK.

O exemplo de código a seguir ilustra o padrão antigo e o novo.

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

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

Usar a nova classe CoreSystem garantirá que o código do aplicativo não precisará ser atualizado se você alterar o aplicativo para usar um registrador de serviços diferente (por exemplo, um dos gerenciadores de serviços experimentais).

IMixedRealityRaycastProvider

Com a adição do IMixedRealityRaycastProvider, o perfil de configuração do sistema de entrada foi alterado. Se você tiver um perfil personalizado, poderá receber os erros na imagem a seguir ao executar seu aplicativo.

Selecionando o provedor Raycast 1

Para corrigir isso, adicione uma instância IMixedRealityRaycastProvider ao perfil do sistema de entrada.

Selecionando o provedor Raycast 2

Sistema de Eventos

  • Os IMixedRealityEventSystem métodos de API antigos e Unregister foram marcados Register como obsoletos. Eles são preservados para compatibilidade com versões anteriores.
  • InputSystemGlobalListener foi marcado como obsoleto. Sua funcionalidade não foi alterada.
  • BaseInputHandler A classe base foi alterada de InputSystemGlobalListener para InputSystemGlobalHandlerListener. Essa é uma alteração interruptiva para todos os descendentes de BaseInputHandler.

Motivação por trás da mudança

A API Register antiga do sistema de eventos e Unregister pode causar vários problemas em runtime, main sendo:

  • Se um componente se registrar para eventos globais, ele receberá eventos de entrada globais de todos os tipos.
  • Se um dos componentes em um objeto registrar eventos de entrada globais, todos os componentes desse objeto receberão eventos de entrada globais de todos os tipos.
  • Se dois componentes no mesmo objeto se registrarem em eventos globais e um estiver desabilitado em runtime, o segundo deixará de receber eventos globais.

Nova API RegisterHandler e UnregisterHandler:

  • Fornece um controle explícito e granular sobre quais eventos de entrada devem ser ouvidos globalmente e quais devem ser baseados em foco.
  • Permite que vários componentes no mesmo objeto ouçam eventos globais independentemente uns dos outros.

Como migrar

  • Se você tiver chamado Register/Unregister a API diretamente antes, substitua essas chamadas por chamadas para .RegisterHandler/UnregisterHandler Use interfaces de manipulador implementadas como parâmetros genéricos. Se você implementar várias interfaces e várias delas ouvirem eventos de entrada globais, chame RegisterHandler várias vezes.
  • Se você estiver herdando de InputSystemGlobalListener, altere a herança para InputSystemGlobalHandlerListener. Implementar RegisterHandlers e UnregisterHandlers métodos abstratos. Na chamada inputSystem.RegisterHandler de implementação (inputSystem.UnregisterHandler) para registrar em todas as interfaces de manipulador para as quais você deseja ouvir eventos globais.
  • Se você estiver herdando de BaseInputHandler, implemente RegisterHandlers e UnregisterHandlers métodos abstratos (o mesmo que para InputSystemGlobalListener).

Exemplos de migração

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

Conscientização Espacial

As interfaces IMixedRealitySpatialAwarenessSystem e IMixedRealitySpatialAwarenessObserver fizeram várias alterações interruptivas, conforme descrito abaixo.

Alterações

Os métodos a seguir foram renomeado para descrever melhor seu uso.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent foi renomeado para IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent para para esclarecer seu uso.

Adições

Com base nos comentários dos clientes, o suporte para a fácil remoção de dados de reconhecimento espacial observados anteriormente foi adicionado.

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

Solucionadores

Alguns componentes do solver e a classe de gerenciador SolverHandler foram alterados para corrigir vários bugs e para um uso mais intuitivo.

SolverHandler

  • A classe não se estende mais de ControllerFinder
  • TrackedObjectToReference propriedade pública preterida e foi renomeada para TrackedTargetType
  • TrackedObjectType substitui os valores do controlador esquerdo & direito. Em vez disso, use MotionController os valores ou HandJoint e atualize a nova TrackedHandedness propriedade para limitar o rastreamento ao controlador esquerdo ou direito

InBetween

  • TrackedObjectForSecondTransform propriedade pública preterida e foi renomeada para SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() foi removido. Para atualizar o solucionador, modifique as propriedades públicas (ou seja SecondTrackedObjectType, )

SurfaceMagnetism

  • MaxDistance propriedade pública preterida e foi renomeada para MaxRaycastDistance
  • CloseDistance propriedade pública preterida e foi renomeada para ClosestDistance
  • O valor padrão para RaycastDirectionMode agora TrackedTargetForward é o que raycasts na direção da transformação de destino rastreada para frente
  • OrientationMode os valores de enumeração, Vertical e Full, foram renomeado para TrackedTarget e SurfaceNormal , respectivamente,
  • KeepOrientationVertical propriedade pública foi adicionada para controlar se a orientação do GameObject associado permanece vertical

Botões

  • PressableButton agora tem DistanceSpaceMode a propriedade definida Local como como padrão. Isso permite que os botões sejam dimensionados enquanto ainda podem ser pressionados

Esfera de Recorte

A interface ClippingSphere foi alterada para espelho as APIs encontradas em ClippingBox e ClippingPlane.

A propriedade Radius do ClippingSphere agora é calculada implicitamente com base na escala de transformação. Antes que os desenvolvedores precisassem especificar o raio do ClippingSphere no inspetor. Se você quiser alterar o raio, basta atualizar a escala de transformação da transformação como faria normalmente.

NearInteractionTouchable e PokePointer

  • NearInteractionTouchable não manipula a tela da interface do usuário do Unity tocando por mais tempo. A classe NearInteractionTouchableUnityUI deve ser usada para toques da interface do usuário do Unity agora.
  • ColliderNearInteractionTouchable é a nova classe base para touchables com base em colisores, ou seja, todos os tocáveis, exceto NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront foi movido e renomeado para PokePointer.TouchableDistance Essa é a distância e a qual o PokePointer pode interagir com touchables. Anteriormente, cada touchable tinha sua própria distância máxima de interação, mas agora isso é definido no PokePointer, o que permite uma melhor otimização.
  • BaseNearInteractionTouchable.DistBack foi renomeado para PokeThreshold Isso deixa claro que PokeThreshold é o equivalente a DebounceThreshold. Um tocável é ativado quando o PokeThreshold é cruzado e liberado quando DebounceThreshold é cruzado.

ReadOnlyAttribute

O Microsoft.MixedReality.Toolkit namespace foi adicionado a ReadOnlyAttribute, BeginReadOnlyGroupAttributee EndReadOnlyGroupAttribute.

PointerClickHandler

A classe PointerClickHandler foi substituída. O PointerHandler deve ser usado em vez disso, ele fornece a mesma funcionalidade.

Suporte ao clicker do HoloLens

Os mapeamentos do controlador do clicker do HoloLens foram alterados de sem WindowsMixedRealityController tratamento para sem WindowsMixedRealityGGVHandtratamento. Para considerar isso, um atualizador automático será executado na primeira vez que você abrir o perfil ControllerMapping. Abra todos os perfis personalizados pelo menos uma vez depois de atualizar para 2.0.0 para disparar essa etapa de migração única.

InteractableHighlight

A classe InteractableHighlight foi substituída. Em InteractableOnFocus vez disso, a classe e FocusInteractableStates o ativo devem ser usados. Para criar um novo Theme ativo para o InteractableOnFocus, clique com o botão direito do mouse na janela do projeto e selecione Criar> Realidade Misturada Tema Interativo do KitdeFerramentas>>.

HandInteractionPanZoom

HandInteractionPanZoom foi movido para o namespace da interface do usuário, pois não era um componente de entrada. HandPanEventData também foi movido para esse namespace e simplificado para corresponder a outros dados de evento de interface do usuário.

Alterações no nome do assembly na versão 2.0.0

Na versão 2.0.0, todos os nomes de assembly oficiais do Realidade Misturada Toolkit e seus arquivos de definição de assembly associados (.asmdef) foram atualizados para se ajustarem ao padrão a seguir.

Microsoft.MixedReality.Toolkit[.<name>]

Em alguns casos, vários assemblies foram mesclados para criar uma melhor unidade de seu conteúdo. Se o projeto usar arquivos .asmdef personalizados, eles poderão exigir atualização.

As tabelas a seguir descrevem como os nomes de arquivo .asmdef RC2 são mapeados para a versão 2.0.0. Todos os nomes de assembly correspondem ao nome do arquivo .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 Removido, 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