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 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 mrtk para corrigir automaticamente e atualizar de componentes preteridos e ajustar-se a alterações significativas. A ferramenta de migração faz parte do pacote Ferramentas .

As instruções abaixo 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 Recurso 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 ativo do Unity (.unitypackage)

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

  1. Salve uma cópia do projeto atual, caso você acerte algum problema em qualquer ponto das 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/Services
    • MRTK/StandardAssets

    Importante

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

    • MRTK/Tools

    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 nota 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 presente, da hierarquia. Isso excluirá a câmera principal, mas ela será recriada na próxima etapa. Se alguma propriedade da câmera principal tiver sido alterada manualmente, elas terão que ser aplicadas novamente manualmente depois que a nova câmera for criada.
    • Selecionar 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 personalizado com eixos e dados atualizados, deixando intactas suas ações de entrada atribuídas personalizadas
  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 deve ser habilitado se algum objeto migrado tiver sido 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 ativo do Unity para Realidade Misturada Ferramenta de Recurso

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

A alteração para usar a Ferramenta de Recurso Realidade Misturada requer um conjunto único de etapas manuais.

  1. Salve uma cópia do seu 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/Services
    • MRTK/StandardAssets

    Importante

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

    • MRTK/Tools

    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 kit de ferramentas Realidade Misturada.

Atualizando 2.3.0 para 2.4.0

A pasta renomeiaas alterações de API

Renomeação 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 codificados 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/Tools

Importante

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

Configuração do olhar no 2.4.0

Esta versão do MRTK modifica as etapas necessárias para a instalação do olhar. A caixa de seleção 'IsEyeTrackingEnabled' pode ser encontrada nas configurações de foco do perfil de ponteiro de entrada. Marcar essa caixa habilitará o olhar baseado em olhos e, em seguida, o olhar padrão baseado na cabeça.

Para obter mais informações sobre essas alterações e instruções completas para a instalação do 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 olhar para a cabeça. Um ponteiro de olhar 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 olhar e mão podem ser encontrados no artigo olhos e mãos .

Alterações de API na 2.4.0

Classes de controlador personalizadas

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 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 Olhar Para o Olho

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 seguintes propriedades do WindowsApiChecker 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 ajustá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 ícones e materiais 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 da 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 personalizada

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 impacto mínimo nos aplicativos, pois o campo não está visível fora de sua classe.

O setter da propriedade pública ControllerPoseSynchronizer.Handedness foi removido (nº 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 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 a funcionar 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 (nº 6863).

Substitua lineRendererSelected por lineMaterialSelected e/ou lineRendererNoTarget por lineMaterialNoTarget para resolver erros de compilação.

Observador espacial StartupBehavior

Observadores espaciais criados sobre a BaseSpatialObserver classe agora respeitam o valor de StartupBehavior quando habilitados novamente (nº 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 do WindowsMixedRealityUtilities foi alterado de Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input para Microsoft.MixedReality.Toolkit.WindowsMixedReality (nº 6863).

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

Atualizando 2.1.0 para 2.2.0

Alterações de API na 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 que é 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 Tipo para Tipo[] e renomeada para RequiredTypes.

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

Atualizando 2.0.0 para 2.1.0

Alterações de API na 2.1.0

BaseNearInteractionTouchable

O BaseNearInteractionTouchable método 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 a serem usadas BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Adicionado

IMixedRealityMouseDeviceManager foi adicionado CursorSpeed e WheelSpeed propriedades. 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 significativa 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; Nada, Tudo, Editor ou Jogador.

Modos de visualização manual

Talvez os perfis de acompanhamento de mão personalizados precisem 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 de 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 chave pressionando a respectiva chave 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 reduzir esse valor.

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

  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 do 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 o novo CursorSpeed e WheelSpeed as propriedades. Os perfis personalizados existentes terão valores padrão fornecidos automaticamente. 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 2.1.0, especialmente em torno da plataforma OpenVR. Selecione MixedRealityToolkit – Utilitários –> Atualizar ->> Perfis de Mapeamento do Controlador ao atualizar. Isso atualizará todos os Perfis de Mapeamento do Controlador personalizados com os eixos e os dados atualizados, deixando intactas as ações de entrada atribuídas personalizadas.

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 e use a IMixedRealityDataProviderAccess instância de GetDataProvider<T>serviço.

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

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

CoreServices

A CoreServices classe é a substituição dos acessadores estáticos do sistema (ex: 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();

O uso da 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 (ex: um dos gerentes de serviço 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 corrigi-los, adicione uma instância IMixedRealityRaycastProvider ao perfil do sistema de entrada.

Selecionando o provedor Raycast 2

Sistema de Eventos

  • Os IMixedRealityEventSystem métodos Register de API antigos e Unregister foram marcados 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. Esta é uma mudança significativa para qualquer descendente de BaseInputHandler.

Motivação por trás da alteração

A API Register do sistema de eventos antiga e Unregister poderia potencialmente causar vários problemas no runtime, sendo principalmente:

  • 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 interromperá o recebimento de 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ê já tiver chamado Register/Unregister a API diretamente antes, substitua essas chamadas por chamadas para RegisterHandler/UnregisterHandler. Use interfaces de manipulador que você implementa 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, InputSystemGlobalListeneraltere a herança para InputSystemGlobalHandlerListener. Implementar RegisterHandlers e UnregisterHandlers abstrair métodos. Na chamada de inputSystem.RegisterHandler implementação (inputSystem.UnregisterHandler) para se registrar em todas as interfaces de manipulador para as quais você deseja escutar eventos globais.
  • Se você estiver herdando métodos BaseInputHandler, implemente RegisterHandlers e UnregisterHandlers 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 significativas, conforme descrito abaixo.

Alterações

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

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

Adições

Com base nos comentários do cliente, o suporte para a remoção fácil dos 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 do gerenciador SolverHandler foram alterados para corrigir vários bugs e para 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 ou HandJoint valor 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 RaycastDirectionMode padrão para agora TrackedTargetForward é o que raycasts na direção da transformação de destino rastreada para a frente
  • OrientationMode enum valores 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 Local propriedade definida 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 espelhar as APIs encontradas no ClippingBox e no ClippingPlane.

A propriedade Radius do ClippingSphere agora é calculada implicitamente com base na escala de transformação. Antes que os desenvolvedores precisem 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 o toque da tela da interface do usuário do Unity. A classe NearInteractionTouchableUnityUI deve ser usada para touchables da interface do usuário do Unity agora.
  • ColliderNearInteractionTouchable é a nova classe base para touchables com base em colisores, ou seja, todos os touchable exceto NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront foi movido e renomeado para PokePointer.TouchableDistance Esta é a distância e que 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 que permite uma melhor otimização.
  • BaseNearInteractionTouchable.DistBack foi renomeado para PokeThreshold Isso deixa claro que PokeThreshold é o equivalente a DebounceThreshold. Um touchable é 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. Em PointerHandler vez disso, ele deve ser usado, ele fornece a mesma funcionalidade.

Suporte ao clicker do HoloLens

Os mapeamentos do controlador do clicker do HoloLens passaram de um sem tratamento WindowsMixedRealityController para um sem tratamento WindowsMixedRealityGGVHand. 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 após a atualização 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 , clique com o InteractableOnFocusbotão direito do mouse na janela do projeto e selecione Criar> Realidade Misturada TemaInteracionável> do Kit de Ferramentas>.

HandInteractionPanZoom

HandInteractionPanZoom foi movido para o namespace da interface do usuário, pois ele não era um componente de entrada. HandPanEventData também foi movido para esse namespace e simplificado para corresponder a outros dados de evento da 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 associado (.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 unidade melhor 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