Atualização de versões anteriores — MRTK2
- Atualizando para uma nova versão do MRTK
- 2.3.0 a 2.4.0
- 2.2.0 a 2.3.0
- 2.1.0 a 2.2.0
- 2.0.0 a 2.1.0
- RC2 a 2.0.0
Localizando a versão atual
Siga estas instruções para descobrir qual versão do MRTK você está usando no momento:
- Abra seu projeto do MRTK no Unity
- Navegue até a pasta "MixedRealityToolkit" na janela projeto
- 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:
- Navegue até a pasta "Realidade Misturada Toolkit Foundation"
- Clique no "package.json" para ver uma visualização no Unity ou abra-a com um editor de texto
- 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,
- Salve uma cópia do projeto atual, caso você tenha problemas a qualquer momento nas etapas de atualização.
- Fechar o Unity
- 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.
- 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.
- Reabrir o projeto no Unity
- 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
- 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.
- 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
- 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.
- Salve uma cópia do projeto atual.
- Fechar o Unity
- 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.
- 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.
- 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. IsMethodAvailable
Use ou IsPropertyAvailable
IsTypeAvailable
.
- 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)
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.
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.
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.
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
MouseLookToggle
foi incluído anteriormente naMouseLookButton
enumeração comoInputSimulationMouseButton.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.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.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.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 CursorSpeed
WheelSpeed
. 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.
Para corrigir isso, adicione uma instância IMixedRealityRaycastProvider ao perfil do sistema de entrada.
Sistema de Eventos
- Os
IMixedRealityEventSystem
métodos de API antigos eUnregister
foram marcadosRegister
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 deInputSystemGlobalListener
paraInputSystemGlobalHandlerListener
. Essa é uma alteração interruptiva para todos os descendentes deBaseInputHandler
.
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, chameRegisterHandler
várias vezes. - Se você estiver herdando de
InputSystemGlobalListener
, altere a herança paraInputSystemGlobalHandlerListener
. ImplementarRegisterHandlers
eUnregisterHandlers
métodos abstratos. Na chamadainputSystem.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
, implementeRegisterHandlers
eUnregisterHandlers
métodos abstratos (o mesmo que paraInputSystemGlobalListener
).
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 paraIMixedRealitySpatialAwarenessSystem.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 paraTrackedTargetType
TrackedObjectType
substitui os valores do controlador esquerdo & direito. Em vez disso, useMotionController
os valores ouHandJoint
e atualize a novaTrackedHandedness
propriedade para limitar o rastreamento ao controlador esquerdo ou direito
InBetween
TrackedObjectForSecondTransform
propriedade pública preterida e foi renomeada paraSecondTrackedObjectType
AttachSecondTransformToNewTrackedObject()
foi removido. Para atualizar o solucionador, modifique as propriedades públicas (ou sejaSecondTrackedObjectType
, )
SurfaceMagnetism
MaxDistance
propriedade pública preterida e foi renomeada paraMaxRaycastDistance
CloseDistance
propriedade pública preterida e foi renomeada paraClosestDistance
- O valor padrão para
RaycastDirectionMode
agoraTrackedTargetForward
é o que raycasts na direção da transformação de destino rastreada para frente OrientationMode
os valores de enumeração,Vertical
eFull
, foram renomeado paraTrackedTarget
eSurfaceNormal
, respectivamente,KeepOrientationVertical
propriedade pública foi adicionada para controlar se a orientação do GameObject associado permanece vertical
Botões
PressableButton
agora temDistanceSpaceMode
a propriedade definidaLocal
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
, BeginReadOnlyGroupAttribute
e 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 WindowsMixedRealityGGVHand
tratamento. 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 |