Atualização de versões anteriores

Encontrar a versão atual

Siga estas instruções para descobrir qual a versão do MRTK que está a utilizar:

  1. Abra o seu projeto MRTK em Unidade
  2. Navegue para a pasta "MixedRealityToolkit" na sua janela Project
  3. Abra o ficheiro chamado "Versão"

Se o ficheiro e a pasta acima não existirem, está numa versão mais recente do MRTK. Nesse caso, tente o seguinte:

  1. Navegue para a pasta "Mixed Reality Toolkit Foundation"
  2. Clique no "package.json" para ver uma pré-visualização em Unidade ou abra-a com um editor de texto
  3. Procure a linha com a palavra "versão:"

Upgrade para uma nova versão do MRTK

Recomenda-se vivamente que a ferramenta de migração seja executada depois de obter a atualização MRTK para a correção automática e atualização de componentes prectados e ajustar-se às alterações de rutura. A ferramenta de migração faz parte do pacote Ferramentas.

As instruções abaixo descrevem o caminho de atualização 2.4.0 a 2.5.0. Se o seu projeto estiver em 2.3.0 ou mais cedo, leia as alterações entre versões para entender o caminho de atualização ou leia as instruções do lançamento anterior para fazer uma atualização versão a versão.

Ferramenta de recurso de realidade mista

A forma mais fácil de atualizar o MRTK para uma versão mais recente mrTK é usando a Ferramenta de Recurso de Realidade Mista para descarregar os pacotes mais recentes e carregá-los diretamente para o seu projeto Unidade.

Se o projeto utilizar previamente ficheiros de ativos de unidade (.unitypackage), consulte estas instruções.

Ficheiros de ativos de unidade (.unitypackage)

Outro caminho de upgrade é baixar manualmente os pacotes MRTK Unitity e aplicá-los ao seu projeto. Veja os degraus abaixo,

  1. Guarde uma cópia do seu projeto atual, caso atinja algum obstáculo em qualquer ponto das etapas de atualização.
  2. Unidade Próxima
  3. Dentro da pasta Ativos, elimine as seguintes pastas MRTK, juntamente com os seus ficheiros .meta (o projeto pode não ter todas as pastas listadas)
    • MRTK/Core
    • MRTK/Exemplos
    • MRTK/Extensões
    • MRTK/Fornecedores
    • MRTK/SDK
    • MRTK/Serviços
    • MRTK/StandardAssets

    Importante

    Se forem feitas modificações nos shaders MRTK, crie uma cópia de segurança local antes de eliminar a pasta MRTK/StandardAssets

    • MRTK/Ferramentas

    Importante

    NÃO elimine o MixedRealityToolkit.Pasta Gerada ou o seu ficheiro .meta.

  4. Eliminar a pasta Da Biblioteca

    Importante

    Algumas ferramentas de unidade, como o Unity Collab, guardam informações de configuração para a pasta da Biblioteca. Se utilizar uma ferramenta que o faça, primeiro copie a pasta de dados da ferramenta da Biblioteca antes de a eliminar, depois de a restaurar após a regeneração da Biblioteca.

  5. Reabrir o projeto na Unidade
  6. Importar os novos pacotes de unidade
    • Fundação - Importe este pacote primeiro
    • Ferramentas
    • (Opcional) Extensões

    Nota

    Se tivessem sido instaladas extensões adicionais, poderão ter de ser re importar.

    • (Opcional) Exemplos
  7. Feche a Unidade e elimine a pasta Da Biblioteca (leia a nota abaixo primeiro!). Este passo é necessário para forçar a Unidade a atualizar a sua base de dados de ativos e a conciliar os perfis personalizados existentes.
  8. Unidade de Lançamento, e para cada cena do projeto
    • Elimine o MixedRealityToolkit e o MixedRealityPlayspace,se estiverem presentes, da hierarquia. Isto irá eliminar a câmara principal, mas será recriada no próximo passo. Se algumas propriedades da câmara principal tiverem sido alteradas manualmente, estas terão de ser reaplicadas manualmente assim que a nova câmara for criada.
    • Selecione MixedRealityToolkit - Adicionar à Cena e Configurar
    • Selecione MixedRealityToolkit - Utilities - > Update - Controller > Mapping Profiles (só precisa de ser feito uma vez) - Isto irá atualizar quaisquer perfis de mapeamento personalizados do controlador com eixos e dados atualizados, deixando intactas as suas ações de entrada personalizadas
  9. Executar a ferramenta de migração e executar a ferramenta no Project Completo para garantir que todo o seu código é atualizado para o mais tardar. A janela de migração contém uma série de diferentes manipuladores de migração, que devem ser executados por conta própria. Este passo envolve:
    • Selecione o primeiro manipulador de migração da 10ada desistência do Migration Handler Selection.
    • Clique no botão "Full Project".
    • Clique no botão "Adicionar projeto completo para migração" (isto irá digitalizar todo o projeto para que os objetos migrarem).
    • Clique no botão "Migrar" que deve ser ativado se forem encontrados objetos migratórios.
    • Repita os três passos anteriores para cada um dos manipuladores de migração dentro da queda. (Veja esta questão que abrange os trabalhos que podem ser feitos para simplificar este processo de migração numa futura libertação)

Mudar de ficheiros de ativos de unidade para ferramenta de recurso de realidade mista

A mudança de ficheiros de ativos da Unidade para pacotes de Ferramenta de Funcionalidade de Realidade Mista traz uma série de benefícios:

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

A alteração da ferramenta De Recurso de Realidade Mista requer um conjunto único de passos manuais.

  1. Guarde uma cópia do seu projeto atual.
  2. Unidade Próxima
  3. Dentro da pasta Ativos, elimine as seguintes pastas MRTK, juntamente com os seus ficheiros .meta (o projeto pode não ter todas as pastas listadas)
    • MRTK/Core
    • MRTK/Exemplos
    • MRTK/Extensões
    • MRTK/Fornecedores
    • MRTK/SDK
    • MRTK/Serviços
    • MRTK/StandardAssets

    Importante

    Se forem feitas modificações nos shaders MRTK, crie uma cópia de segurança local antes de eliminar a pasta MRTK/StandardAssets

    • MRTK/Ferramentas

    Importante

    NÃO elimine o MixedRealityToolkit.Pasta Gerada ou o seu ficheiro .meta.

  4. Eliminar a pasta Da Biblioteca

    Importante

    Algumas ferramentas de unidade, como o Unity Collab, guardam informações de configuração para a pasta da Biblioteca. Se utilizar uma ferramenta que o faça, primeiro copie a pasta de dados da ferramenta da Biblioteca antes de a eliminar, depois de a restaurar após a regeneração da Biblioteca.

  5. Reabrir o projeto na Unidade

Uma vez executadas as etapas anteriores, executa a Ferramenta de Recurso de Realidade Mista e importa a versão desejada do Conjunto de Ferramentas de Realidade Mista.

Atualização 2.3.0 a 2.4.0

Pasta rebatiza alterações daAPI

Pasta renomeada em 2.4.0

As pastas MixedRealityToolkit foram renomeadas e transferidas para uma hierarquia comum na versão 2.4. Se uma aplicação utilizar caminhos codificados para recursos MRTK, eles terão de ser atualizados de acordo com o quadro seguinte.

Pasta anterior Nova Pasta
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Exemplos MRTK/Exemplos
MixedRealityToolkit.Extensões MRTK/Extensões
MixedRealityToolkit.Fornecedores MRTK/Fornecedores
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Serviços
MixedRealityToolkit.Testes MRTK/Testes
MixedRealityToolkit.Tools MRTK/Ferramentas

Importante

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

Configuração do olhar em 2.4.0

Esta versão do MRTK modifica os passos necessários para a configuração do olhar. A caixa de verificação 'IsEyeTrackingEnabled' pode ser encontrada nas definições de olhar do perfil do ponteiro de entrada. A verificação desta caixa permitirá olhares baseados nos olhos, em vez do olhar padrão baseado na cabeça.

Para obter mais informações sobre estas alterações e instruções completas para a configuração do rastreio de olhos, consulte o artigo de rastreio ocular.

Comportamento do ponteiro do olhar em 2.4.0

O comportamento do ponteiro padrão do olhar dos olhos foi modificado para corresponder ao comportamento do ponteiro padrão do olhar da cabeça. Um ponteiro de olhares oculares será automaticamente suprimido assim que uma mão for detetada. O ponteiro do olhar tornar-se-á visível novamente depois de dizer "Selecione".

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

API muda em 2.4.0

Aulas de controlador personalizado

As aulas de controlador personalizado tinham de definir SetupDefaultInteractions(Handedness) anteriormente. Este método foi tornado obsoleto em 2.4, uma vez que o parâmetro de desmesudo foi redundante com a própria mão da classe controladora. O novo método não tem parâmetros. Além disso, muitas classes de controlador definiram isto da mesma forma , AssignControllerMappings(DefaultInteractions); por isso a chamada completa foi refacada para baixo e fez uma BaseController substituição opcional em vez de necessária.

Propriedades do Eye Gaze

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

Se tivesse feito isto antes...

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

Faça isto agora...

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

Propriedades do WindowsApiChecker

As seguintes propriedades do WindowsApiChecker foram marcadas como obsoletas. Por IsMethodAvailable favor, use, IsPropertyAvailable ou IsTypeAvailable . .

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

Não existem planos de adicionar propriedades ao WindowsApiChecker para futuras versões de contrato da API.

GltfMeshPrimitiveAttributes read-only

Os atributos primitivos da malha gltf costumavam ser definidos, agora são apenas de leitura. Os seus valores serão definidos uma vez quando desercializados.

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

Ícones de botões previamente personalizados necessários para atribuir um novo material ao renderizador quad do botão. Isto já não é necessário e recomendamos mover texturas de ícones personalizadas para um IconSet. Os materiais e ícones personalizados existentes são preservados. No entanto, serão menos ideais até serem atualizados. Para atualizar os ativos em todos os botões do projeto para o novo formato recomendado, utilize o ButtonConfigHelperMigrationHandler. (Kit de Ferramentas de Realidade Mista - > Utilitários - > Janela de Migração - > Seleção do Manipulador de Migração - > Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Atualizar o diálogo da janela

Se um ícone não for encontrado no conjunto de ícones predefinidos durante a migração, será criado um conjunto de ícones personalizados em MixedRealityToolkit.Generated/CustomIconSets. Um diálogo indicará que isto aconteceu.

Notificação de ícone personalizado

Atualização 2.2.0 a 2.3.0

Alterações na API em 2.3.0

ControladorPoseSynchronizer

O campo de controladores privadosPosynchronizer.handedness foi marcado como obsoleto. Isto deve ter um impacto mínimo nas aplicações, uma vez que o campo não é visível fora da sua classe.

O controlador públicoPoseSynchronizer.Handedness property's setter foi removido(#7012).

MSBuild para a Unidade

Esta versão do MRTK utiliza uma versão mais recente do MSBuild for Unitity do que as versões anteriores. Durante a carga do projeto, se a versão mais antiga estiver listada no manifesto Unity Package Manger, aparecerá o diálogo de configuração, com a opção Enable MSBuild for Unitity verificada. A aplicação realizará uma atualização.

ScriptingUtilities

A classe ScriptingUtilities foi marcada como obsoleta e foi substituída por ScriptUtilities, na assembléia 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, recomenda-se a atualização para a nova classe.

ShellHandRayPointer

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

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

StartupBehavior de Observador Espacial

Os observadores espaciais construídos sobre a BaseSpatialObserver classe agora honram o valor do StartupBehavior quando re-habilitadosBaseSpatialObserver

Não são necessárias alterações para tirar partido desta correção.

Pré-fabricados de controlo UX atualizados para utilizar o PressableButton

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

  • AnimaçãoButton
  • Botão
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • ToggleSwitch
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUiToggleButton

O código de aplicação pode exigir a atualização devido a esta alteração.

WindowsMixedRealityUtilities espaço de nome

O espaço de nome do WindowsMixedRealityUtilities mudou de Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input para Microsoft.MixedReality.Toolkit.WindowsMixedReality(#6863).

Por favor, atualize #using declarações para resolver erros de compilação.

Atualização 2.1.0 a 2.2.0

API muda em 2.2.0

IMixedRealityBoundarySystem.contém

Este método acolheu anteriormente um enum experimental específico, definido pela unidade. Agora tem um enum definido pelo MRTK que é idêntico ao enum da Unidade. Esta mudança ajuda a preparar o MRTK para as futuras APIs de fronteira da Unidade.

MixedRealityServiceProfileAttribute

Para melhor descrever os requisitos para apoiar um perfil, o MixedRealityServiceProfileAttribute foi atualizado para adicionar uma coleção opcional de tipos excluídos. Como parte desta alteração, a propriedade ServiceType foi alterada de Tipo para Tipo[] e foi renomeada para Os Tipos Necessários.

Uma segunda propriedade, ExcluindoTips também foi adicionada.

Atualização 2.0.0 a 2.1.0

API muda em 2.1.0

BaseNearInteractionTouchable

O BaseNearInteractionTouchable foi modificado para marcar o método como OnValidate virtual. As classes que se estendem BaseNearInteractionTouchable (ex: NearInteractionTouchableUnityUI ) foram atualizadas para refletir esta mudança.

ColliderNearInteractionTouchable

A ColliderNearInteractionTouchable aula foi deprecada. Por favor, atualize referências de código para utilização BaseNearInteractionTouchable .

IMixedRealityMouseDeviceManager

Adicionou

IMixedRealityMouseDeviceManager foi adicionado CursorSpeed e WheelSpeed propriedades. Estas propriedades permitem que as aplicações especifiquem um valor multiplicador pelo qual a velocidade do cursor e da roda, respectivamente, será dimensionada.

Trata-se de uma mudança de rutura e requer que as implementações existentes do gestor de dispositivos do rato sejam modificadas.

Nota

Esta alteração não é compatível com a versão 2.0.0.

Precatado

A MouseInputProfile propriedade foi marcada como obsoleta e será removida de uma versão futura do Microsoft Mixed Reality Toolkit. Recomenda-se que o código de aplicação já não utilize esta propriedade.

Interagivel

Os seguintes métodos e propriedades foram depreciados e serão removidos de uma versão futura do Microsoft Mixed Reality Toolkit. A recomendação é atualizar o código de aplicação de acordo com a orientação contida no atributo Obsoleto e exibida na 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

A NearInteractionTouchableSurface classe foi adicionada e agora serve como classe base para e NearInteractionTouchableNearInteractionTouchableUnityUI .

Alterações de perfil em 2.1.0

Perfil de rastreio de mão

A malha manual e as visualizações articulares têm agora um editor separado e configurações de jogadores. O perfil de rastreio manual foi atualizado para permitir a definição destas visualizações para; Nada, Tudo, Editor ou Jogador.

Modos de visualização de mãos

Os perfis de rastreio personalizados podem ter de ser atualizados para funcionar corretamente com a versão 2.1.0.

Nota

Esta alteração não é compatível 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 definições no perfil de simulação de entrada. Algumas alterações não podem ser migradas automaticamente e os utilizadores podem descobrir que os perfis estão a usar valores predefinidos.

  1. Todas as ligações do KeyCode e do botão do rato no perfil foram substituídas por uma KeyBinding estrutura genérica, que armazena o tipo de encadernação (chave ou rato) bem como o código de ligação real (KeyCode ou número de botão do rato, respectivamente). A estrutura tem o seu próprio inspetor, que permite visualizar unificado e oferece uma ferramenta "auto-bind" para definir rapidamente as ligações de chaves, pressionando a respetiva chave em vez de selecionar a partir de uma enorme lista de dropdown.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • DireitoHandManipulationKey
  2. MouseLookToggle foi previamente incluído no MouseLookButton enum como InputSimulationMouseButton.Focused , é agora uma opção separada. Quando ativada, a câmara continuará a rodar com o rato depois de soltar o botão, até que a tecla de fuga seja premida.

  3. HandDepthMultiplier o valor por defeito foi reduzido de 0,1 para 0,03 para acomodar algumas alterações na simulação de entrada. Se a câmara se mover demasiado depressa ao deslocar-se, tente baixar este valor.

  4. As teclas para as mãos rotativas foram removidas, a rotação da mão também é controlada pelo rato. A HandRotateButton manutenção (Ctrl) juntamente com a tecla de manipulação da mão esquerda/direita (LShift/Space) permitirá a rotação da mão.

  5. Foi introduzido um novo eixo "UpDown" na lista de eixos de entrada. Isto controla o movimento da câmara na vertical e predefinições nas teclas Q/E, bem como nos botões do gatilho do controlador.

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

Perfil do fornecedor de dados do rato

O perfil do fornecedor de dados do rato foi atualizado para expor as novas CursorSpeedWheelSpeed propriedades. Os perfis personalizados existentes terão automaticamente valores predefinidos fornecidos. Quando o perfil for guardado, estes novos valores serão persistidos.

Perfil de mapeamento do controlador

Alguns eixos e tipos de entrada foram atualizados em 2.1.0, especialmente em torno da plataforma OpenVR. Por favor, certifique-se de selecionar MixedRealityToolkit - Utilities - > Update - Controller > Mapping Profiles ao atualizar. Isto atualizará quaisquer perfis de mapeamento personalizados do Controlador com os eixos e dados atualizados, deixando intactas as suas ações de entrada personalizadas.

Atualização do RC2 para 2.0.0

Entre os lançamentos RC2 e 2.0.0 do Microsoft Mixed Reality Toolkit, foram feitas alterações que podem ter impacto nos projetos existentes. Este documento descreve essas alterações e como atualizar os projetos para a versão 2.0.0.

API muda em 2.0.0

Desde o lançamento do RC2, houve uma série de alterações na API, incluindo algumas que podem quebrar os projetos existentes. As secções seguintes descrevem as alterações que ocorreram entre as versões RC2 e 2.0.0.

MixedRealityToolkit

As seguintes propriedades públicas no objeto MixedRealityToolkit foram depreciadas.

  • RegisteredMixedRealityServices deixou de conter a recolha de serviços de extensões registadas e de prestadores de dados.

Para aceder aos serviços de extensão, MixedRealityServiceRegistry.TryGetService<T> utilize. Para aceder aos fornecedores de dados, lance a instância de serviço IMixedRealityDataProviderAccess para e utilize GetDataProvider<T> .

Utilizar MixedRealityServiceRegistryCoreServices ou, em vez disso, para as seguintes propriedades preprecadas

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

CoreServices

A CoreServices classe é a substituição dos acessórios do sistema estático (ex: BoundarySystem) encontrados no MixedRealityToolkit objeto.

Importante

Os MixedRealityToolkit acessórios do sistema foram depreciados na versão 2.0.0 e serão removidos numa futura versão do MRTK.

O seguinte exemplo de código ilustra o velho e o novo padrão.

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

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

A utilização da nova classe CoreSystem garantirá que o seu código de aplicação não necessitará de ser atualizado se alterar a aplicação para utilizar um registo de serviço diferente (ex: um dos gestores de serviços experimentais).

IMixedRealityRaycastProvider

Com a adição do IMixedRealityRaycastProvider, o perfil de configuração do sistema de entrada foi alterado. Se tiver um perfil personalizado, poderá receber os erros na imagem seguinte quando executar a sua aplicação.

Selecionando o fornecedor Raycast 1

Para corrigir estas, adicione uma instância IMixedRealityRaycastProvider ao seu perfil de sistema de entrada.

Selecionando o fornecedor Raycast 2

Sistema de Eventos

  • Os IMixedRealityEventSystem antigos métodos da API Register e foram Unregister marcados como obsoletos. São preservados para retrocompatibilidade.
  • InputSystemGlobalListener tem sido marcado como obsoleto. A sua funcionalidade não mudou.
  • BaseInputHandler a classe base foi alterada de InputSystemGlobalListener . para InputSystemGlobalHandlerListener . Esta é uma mudança de rutura para qualquer descendente BaseInputHandler de. .

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

O antigo sistema de eventos API Register e Unregister pode potencialmente causar múltiplos problemas em tempo de execução, sendo principal:

  • Se um componente se registar para eventos globais, receberá eventos globais de entrada de todos os tipos.
  • Se um dos componentes de um objeto se registar para eventos globais de entrada, todos os componentes deste objeto receberão eventos globais de entrada de todos os tipos.
  • Se dois componentes no mesmo objeto se registarem em eventos globais, e um for desativado em tempo de execução, o segundo deixa de receber eventos globais.

Nova API RegisterHandlerUnregisterHandler e:

  • Proporciona um controlo explícito e granular sobre os eventos de entrada que devem ser ouvidos globalmente e que devem ser focados.
  • Permite que vários componentes no mesmo objeto ouçam eventos globais independentemente uns dos outros.

Como migrar

  • Se já ligou diretamente para Register/Unregister a API, substitua estas chamadas por chamadas para RegisterHandler/UnregisterHandler . Utilize interfaces de manipulador que implementa como parâmetros genéricos. Se implementar várias interfaces, e várias delas ouvir eventos de entrada global, ligue RegisterHandler várias vezes.
  • Se tiver herdado de, mude a InputSystemGlobalListener herança para InputSystemGlobalHandlerListener . Implementar RegisterHandlers e UnregisterHandlers métodos abstratos. Na chamada de implementação inputSystem.RegisterHandler , para registar em todas as inputSystem.UnregisterHandler interfaces de handler pretende ouvir eventos globais.
  • Se tiver herdado de BaseInputHandlerRegisterHandlers métodos, implementar e UnregisterHandlers abstratos (os mesmos que InputSystemGlobalListener para).

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

Consciência Espacial

As interfaces IMixedRealitySawarenessSystem e IMixedRealitySawarenessObserver tomaram múltiplas alterações de rutura, conforme descrito abaixo.

Alterações

Os seguintes métodos foram renomeados para descrever melhor a sua utilização.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent foi renomeado para IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent clarificar a sua utilização.

Adições

Com base no feedback do cliente, foi adicionado suporte para uma fácil remoção de dados de consciência espacial previamente observados.

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

Solucionadores

Alguns componentes solucionadores e a classe de gerente SolverHandler mudaram para corrigir vários bugs e para uma utilização mais intuitiva.

SolverHandler

  • A classe já não se estende desde ControllerFinder
  • TrackedObjectToReference propriedade pública depreciada e foi renomeado para TrackedTargetType
  • TrackedObjectType deprecia os & valores do controlador direito esquerdo. Em vez disso, utilize MotionController ou HandJoint valores e atualize novas TrackedHandedness propriedades para limitar o rastreio ao controlador esquerdo ou direito

InBetween

  • TrackedObjectForSecondTransform propriedade pública depreciada e foi renomeado para SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() foi removido. Para atualizar o solucionador, modifique os imóveis públicos (i.e) SecondTrackedObjectType

SurfaceMagnetismo

  • MaxDistance propriedade pública depreciada e foi renomeado para MaxRaycastDistance
  • CloseDistance propriedade pública depreciada e foi renomeado para ClosestDistance
  • Valor padrão para RaycastDirectionMode é agora que os raios na TrackedTargetForward direção do alvo rastreado transformam para a frente
  • OrientationMode valores Vertical enum, e , foram Full renomeados para TrackedTargetSurfaceNormal e, respectivamente,
  • KeepOrientationVertical propriedade pública foi adicionada para controlar se a orientação do GameObject associado permanece vertical

Botões

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

Esfera de Recorte

A interface ClippingSphere mudou para espelhar as APIs encontradas na ClippingBox e no ClippingPlane.

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

NearInteractionTouchable e PokePointer

  • NearInteractionTouchable não lida mais com a lona UI da Unidade. A classe NearIntertionTouchableUnityUI deve ser usada para os touchables de II de unidade agora.
  • ColliderNearInteractionTouchable é a nova classe base para tocáveis com base em colisões, ou seja, todos os tocáveis, 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 a sua própria distância máxima de interação, mas agora isto é definido no PokePointer que permite uma melhor otimização.
  • BaseNearInteractionTouchable.DistBack foi renomeado para PokeThreshold Isto deixa claro que PokeThreshold é a contraparte da DebounceThreshold. Um touchable é ativado quando o PokeThreshold é atravessado, e libertado quando DebounceThreshold é cruzado.

ReadOnlyAttribute

O Microsoft.MixedReality.Toolkit espaço de nome foi adicionado a , e ReadOnlyAttributeBeginReadOnlyGroupAttributeEndReadOnlyGroupAttribute .

PointerClickHandler

A PointerClickHandler aula foi deprecada. Em PointerHandler vez disso, deve ser utilizado, fornece a mesma funcionalidade.

suporte HoloLens clicker

Os mapeamentos do controlador do HoloLens clicker mudaram de ser um desmedido WindowsMixedRealityController para ser um desmedido WindowsMixedRealityGGVHand . Para responder a isto, um atualizador automático será executado na primeira vez que abrir o seu perfil ControllerMapping. Por favor, abra quaisquer perfis personalizados pelo menos uma vez após a atualização para 2.0.0 para desencadear este passo de migração único.

Luz de alta interagem

A InteractableHighlight aula foi deprecada. A InteractableOnFocus classe e o ativo devem ser FocusInteractableStates usados. Para criar um novo Theme ativo para o , clique à direita na janela do projeto e InteractableOnFocus selecione ThemeMixed >InteractableOnFocus>>>>.

HandInteractionPanZoom

HandInteractionPanZoom foi movido para o espaço de nome da UI, uma vez que não era um componente de entrada. HandPanEventData também foi movido para este espaço de nome, e simplificado para corresponder a outros dados de eventos de UI.

Alterações de nome de montagem em 2.0.0

Na versão 2.0.0, todos os nomes oficiais de montagem do Mixed Reality Toolkit e a sua definição de montagem associada (.asmdef) foram atualizados para se adaptarem ao seguinte padrão.

Microsoft.MixedReality.Toolkit[.<name>]

Em alguns casos, várias assembleias foram fundidas para criar uma melhor unidade do seu conteúdo. Se o seu projeto utilizar ficheiros personalizados .asmdef, poderão necessitar de atualizações.

As tabelas que se seguem descrevem como o mapa de nomes de ficheiros RC2 .asmdef para a versão 2.0.0. Todos os nomes de montagem correspondem ao nome do ficheiro .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.Fornecedores

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.Exemplos

RC2 2.0.0
MixedRealityToolkit.Exemplos.asmdef Microsoft.MixedReality.Toolkit.Examples.asmdef
MixedRealityToolkit.Exemplos.Demos.Gltf.asmdef Microsoft.MixedReality.Toolkit.Demos.Gltf.asmdef
MixedRealityToolkit.Exemplos.Demos.StandardShader.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.StandardShader.Inspectors.asmdef
MixedRealityToolkit.Exemplos.Demos.Utilities.InspectorFields.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.asmdef
MixedRealityToolkit.Exemplos.Demos.Utilities.InspectorFields.InspectorFields.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.Inspectorfields.asmdef
MixedRealityToolkit.Exemplos.Demos.UX.Interactables.asmdef Microsoft.MixedReality.Toolkit.Demos.UX.Interactables.asmdef